自由表(英語:free list[1]是一种用来实现特定动态内存分配方案的数据结构,也称自由列表。自由表的核心原理是将若干未分配的内存块用链表连接起来,将未分配区域的第一个作为指向下一个未分配区域的指针使用。自由表非常适合用来实现内存池,因为内存池中对象的大小都是相同的。

用自由表实现内存的分配和回收非常简单:回收内存时只需将内存块链入自由表;分配时也只需从自由表的一端取下即可直接使用。如果内存块的大小不一,则分配前还需要在自由表中搜索足够大的内存块,可能有一定的额外消耗。

因为自由表使用了链表结构,所以也继承了它的劣势:访问局部性低下,难以利用缓存

另见

参考资料

  1. ^ freelist - 自由表. 國家教育研究院雙語詞彙、學術名詞暨辭書資訊網. [2018-07-13]. (原始内容存档于2018-09-10).