增加堆缓冲区大小的最佳方法

时间:2020-06-17 12:31:31

标签: c linux memory-management malloc realloc

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

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

什么是最好的方法? reallocfreemalloc

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

这接近于底层优化。长话短说:这取决于。如果仅分配较大的缓冲区,则free + malloc可能更好,因为可以避免复制旧数据。但是,如果分配微小的缓冲区,alloc可能会分配超出要求的数量。在这种情况下,realloc会更快,因为它将是普通操作。