关于堆及内存分配点滴
关于堆及内存分配点滴
1. 无论是堆,还是栈都是对虚存的操作和管理。
2. 系统调用brk()和mmap()用来动态分配虚存空间,也就是表明这些虚存地址是合法的,访问的时候,系统应为其分配物理内存,而不是报错。
3. 堆的本质是动态申请的虚存空间。理论上可以用任何方式去管理这块空间。但数据结构--"堆"是最常用的一种,所以这块分配的空间常称为被堆。
4. 和栈不一样,堆的管理是在用户函数库中进行,malloc/free等函数是堆的入口。
5. 每次分配的内存块大小都会被记录下来,释放的时候只需要指定要释放的内存地址就行了。这就是为什么malloc的时候要指定大小,free的时候不用。
6. 堆和栈一样,仍然使用了物理内存的延迟分配策略。
原文
http://www.cnblogs.com/moodlxs/articles/2346826.html