【问题标题】:Best way to increase heap buffer size增加堆缓冲区大小的最佳方法
【发布时间】:2020-10-07 06:39:22
【问题描述】:

我已经用malloc 在堆中分配了一个缓冲区,然后我想增加那个缓冲区。

我不再需要缓冲区中的数据,只想增加大小。

最好的方法是什么? reallocfreemalloc?

【问题讨论】:

    标签: c linux memory-management malloc realloc


    【解决方案1】:

    free()malloc() 可能会更好,因为如果同一位置没有足够的空间,realloc() 必须复制数据,这是不必要的工作。

    【讨论】:

      【解决方案2】:

      使用free(),然后使用malloc()realloc() 函数将尝试增加已分配内存的大小,但如有必要,会将您的数据移动到新位置。由于您不再需要数据,因此这种复制是浪费时间。

      【讨论】:

        【解决方案3】:

        这接近于低级优化。长话短说:这取决于。如果您只分配相当大的缓冲区,free + malloc 可能会更好,因为您避免了旧数据的副本。但是如果你分配很小的缓冲区,alloc 可以分配比请求更多的缓冲区。在这种情况下,realloc 会更快,因为它是一个普通的无操作。

        【讨论】:

        • 是的 - 与许多微优化一样:这取决于。对于非常大的分配,考虑到分页,大部分复制可能是“免费的”。
        猜你喜欢
        • 1970-01-01
        • 2014-08-22
        • 2019-08-06
        • 2017-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-15
        • 2012-02-06
        相关资源
        最近更新 更多