动态内存分配–显式空闲链表

  • Post author:
  • Post category:其他

显式空闲链表在空闲块中使用指针连接空闲块,仅仅需要关注空闲块,数据结构如下:
在这里插入图片描述
仍然需要边界标记来进行空闲块合并。

显示空闲链表的释放

  • LIFO后进先出法:将新释放的块放置在链表的开始处(常数时间;碎片太多)
  • 地址顺序法:按地址顺序维护链表(需要搜索;碎片少于LIFO)

小结

与隐式空闲链表相比:

  • 分配时间从块总数的线性时间减少到空闲块数量的线性时间(当大量内存被占用时快得多)
  • 因为需要在列表中拼接块,释放和分配稍显复杂
  • 每个块需要额外两个字

最常用的链表连接是将分离的空闲链表结合在一起,维护多个不同大小类的或者不同对象类型的链表。(分离的空闲链表分配器)


版权声明:本文为qq_45656248原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。