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



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

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

最好的方法是什么?realloc还是freemalloc

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

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

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

相关内容

最新更新