标签: c list memory malloc
我正在C中实现malloc(),现在我的空闲列表以LIFO顺序维护(即新释放的块被添加到列表的开头)并且我的分配器使用第一个拟合算法来搜索免费记忆块。我的教科书提到在这种情况下,按地址顺序维护列表比LIFO顺序中的列表具有更好的内存利用率,但我不明白为什么,也没有解释。最终我会实现一个伙伴系统或类似的东西,但现在我只想了解这一点。
答案 0 :(得分:2)
如果您的自由列表按地址排序,则合并空闲块(“碎片整理”)会更容易 - 将两个块连接到一个更大的块中基本上是微不足道的。