内存重新分配 - 保持我的数据到位

时间:2012-07-24 16:05:48

标签: c++ memory-management

假设我在堆中有一些数组并不重要mallocnew。我需要最有效的方法来扩大它。我的意思是,如果它有足够的可用空间,在已经分配的数据之后,我可以保持我的数据不变。是否可以用C ++进行维护?

realloc是否以这种方式运作?

2 个答案:

答案 0 :(得分:3)

是的,realloc正是您要找的。请注意,它不适用于new,您必须使用malloc(或者说,calloc)。此外,有时只是不可能扩展内存,所以realloc将尝试为你做,但如果它不能 - 它将诉诸分配新的内存,将你的内容复制到一个新的地方,并释放旧记忆。

答案 1 :(得分:1)

是的,realloc就是这样,虽然链接说它不能保证,但我认为这是针对内存碎片并且没有足够的空间来原位扩展内存块的情况。 / p>