gpt4 book ai didi

c - 多个小 malloc 与一个大 malloc

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

任务是将一个二进制文件解析到内存中。但是,我事先不知道需要分配的内存量。

哪种方法更可取:在解析例程中进行多个小 malloc,或者首先遍历文件以确定所需的内存量,然后再次解析?

感谢任何提示。

最佳答案

在几乎所有情况下,一次大分配比多次小分配要好。这样可以防止碎片化,减少系统调用。它通常会通过更好的局部性带来更好的性能。

一种常见的技术是先分配一个小段,然后按固定因子(通常是 1.5)重新分配一个较大的段。收集所有元素后,如果过度分配被认为很大,可以将内存固定为最大大小。

无论如何:先实现最简单的。如果你有性能问题:benchmark。然后优化。事实证明,分配甚至不是您的瓶颈。

编辑:正如 R.. 所提到的,您可能会通过推理内存上限及其与文件长度的关系来了解要分配多少。大多数好的二进制格式还在 header 段中包含长度和大小信息。如果您可以通过一些算术和/或文件搜索计算出您的数据结构所需的确切大小,那么您就赢了。

关于c - 多个小 malloc 与一个大 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641026/

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