显式空闲链表在空闲块中使用指针连接空闲块,仅仅需要关注空闲块,数据结构如下:
仍然需要边界标记来进行空闲块合并。
显示空闲链表的释放
- LIFO后进先出法:将新释放的块放置在链表的开始处(常数时间;碎片太多)
- 地址顺序法:按地址顺序维护链表(需要搜索;碎片少于LIFO)
小结
与隐式空闲链表相比:
- 分配时间从块总数的线性时间减少到空闲块数量的线性时间(当大量内存被占用时快得多)
- 因为需要在列表中拼接块,释放和分配稍显复杂
- 每个块需要额外两个字
最常用的链表连接是将分离的空闲链表结合在一起,维护多个不同大小类的或者不同对象类型的链表。(分离的空闲链表分配器)
版权声明:本文为qq_45656248原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。