关于堆及内存分配点滴

关于堆及内存分配点滴

1. 无论是堆,还是栈都是对虚存的操作和管理。

2. 系统调用brk()和mmap()用来动态分配虚存空间,也就是表明这些虚存地址是合法的,访问的时候,系统应为其分配物理内存,而不是报错。

3. 堆的本质是动态申请的虚存空间。理论上可以用任何方式去管理这块空间。但数据结构--"堆"是最常用的一种,所以这块分配的空间常称为被堆。

4. 和栈不一样,堆的管理是在用户函数库中进行,malloc/free等函数是堆的入口。

5. 每次分配的内存块大小都会被记录下来,释放的时候只需要指定要释放的内存地址就行了。这就是为什么malloc的时候要指定大小,free的时候不用。

6. 堆和栈一样,仍然使用了物理内存的延迟分配策略。

原文

http://www.cnblogs.com/moodlxs/articles/2346826.html

原文地址:https://www.cnblogs.com/mydomain/p/2924734.html