我已经用malloc
在堆中分配了一个缓冲区,然后我想增加该缓冲区。
我不再需要缓冲区中的数据,只想增加大小。
什么是最好的方法? realloc
或free
和malloc
?
答案 0 :(得分:2)
free()
和malloc()
可能更好,因为如果realloc()
必须在同一位置没有足够的可用空间来复制数据,那么这是不必要的工作。
答案 1 :(得分:2)
使用free()
,然后使用malloc()
。 realloc()
函数将尝试增加已分配内存的大小,但如有必要,会将数据移动到新位置。由于您不再需要数据,因此进行复制非常浪费时间。
答案 2 :(得分:1)
这接近于底层优化。长话短说:这取决于。如果仅分配较大的缓冲区,则free
+ malloc
可能更好,因为可以避免复制旧数据。但是,如果分配微小的缓冲区,alloc
可能会分配超出要求的数量。在这种情况下,realloc
会更快,因为它将是普通操作。