视频地址:

http://player.bilibili.com/player.html?aid=31289365&bvid=BV1iW411d7hd&cid=100814374&page=19

http://player.bilibili.com/player.html?aid=31289365&bvid=BV1iW411d7hd&cid=161460550&page=20

课件地址:

对应于书中的9.9。


不能分配小于最小块大小的块。


除了上一章介绍的通过mmap函数能让用户自定义内存映射,将磁盘文件映射到虚拟内存中以外,也可以在运行时使用动态内存分配器(Dynamic Memory Allocator)来分配额外的虚拟内存。动态内存分配器维护着虚拟内存中的堆段,将堆视为一组不同大小的块的集合,每个块由若干个连续的虚拟地址构成(一个块不一定处在同一个虚拟页),每个块具有两种状态:

而在最开始进行内存映射时,堆是与匿名文件关联起来的,所以堆是一个全0的段,即处于空闲状态,它紧跟在未初始的数据段后面,向地址更大的方向延伸,且内核对每个进程都维护了brk变量来指向堆顶。

动态内存分配器具有两种类型,都要求由应用程序显示分配块,但是由不同实体来负责释放已分配的块: