malloc 实验分析
内存分配器的质量需求
浪费最小的空间
管理内存的数据结构本身尽量小,同时减少空间碎片
最快的速度
malloc/free 是常用的操作,按照 2/8 原则,常用的操作
就是性能热点
最大化局部性
考虑程序访问内存的局部性,尽量减少 cache miss 和
page fault
内存分配器的质量需求
最大化可移植性
通常情况下,内存管理器要向 OS 申请内存,然后进行
二次分配。 OS 提供的函数因平台而异,应尽量抽象出
平台相关的代码
最大化适应性
尽量让内存管理器适用于很广的情况,只有极少情况
下去调设置参数
分配器具体实现方法
组织策略:隐式空闲链表,显式空闲链表
选择策略:首次适配,下次适配,最佳适配
分割策略:确定分配块的大小
合并策略:立即合并,推迟合并
隐式空闲链表分配器(书上例子)
采用首次适配或下次适配策略
边界标记立即合并方式
块结构