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

问题描述 投票:0回答:2

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

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

最好的方法是什么?realloc 或者 freemalloc?

c linux malloc realloc
2个回答
2
投票

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


2
投票

使用 free() 然后 malloc(). 该 realloc() 函数将尝试增加原地分配的内存大小,但如果需要的话,会将你的数据移动到新的位置。 由于你不再需要这些数据,这种复制是浪费时间的。


1
投票

这接近于低级优化。长话短说:这要看情况。如果你只分配了相当大的缓冲区,那么你就可以用这个方法。free + malloc 可以更好,因为你避免了旧数据的复制。但如果你分配了微小的缓冲区, alloc 可能会分配到比请求更多的资源。在这种情况下: realloc 会更快,因为这将是一个普通的无操作。

© www.soinside.com 2019 - 2024. All rights reserved.