gpt4 book ai didi

c - Malloc 和内存碎片

转载 作者:太空狗 更新时间:2023-10-29 15:32:56 25 4
gpt4 key购买 nike

如果我有许多函数调用 malloc() 以获取小尺寸(通常最多 500 字节),然后在完成后释放。 malloc() 会重新组合相邻的 block ,还是会继续拆分更大的 block 并导致碎片?

对于这种情况,是使用足够大小的缓冲区还是每次调用 malloc() 更好?

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

最佳答案

malloc() 完全依赖于实现。你真的不能对它说任何“正式”的话。

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

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

关于c - Malloc 和内存碎片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19533992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com