C语言 Malloc 和内存碎片



如果我有很多函数为小尺寸(通常最多 500 字节)调用 malloc(),那么完成后释放。malloc()会重新组合相邻的块,还是会继续分裂更大的块并导致碎片化?

对于此方案,是每次都使用足够大小的缓冲区还是调用malloc()更好?

我对 GNU C 库很感兴趣,但关于其他实现的答案也很有用。

malloc() 完全依赖于实现。你真的不能"正式"说任何事情。

如果你真的关心它,你总是可以写一个数据结构来维护一个由 500 字节项目组成的巨型池,你可以从中获取并回馈。 所以基本上是一个特定的malloc,并且对该特定数据类型是免费的。这些东西对于具有固定大小对象的系统确实有所帮助,并且其中最大数量不会发生太大变化。例如,在具有固定大小节点的树操作上。

与不必考虑这一点的系统相比,malloc() 是通用的并且必须考虑不同的块大小这一事实总是会给它带来劣势。

相关内容

  • 没有找到相关文章

最新更新