重新分配C++数组的内存.

Ama*_*ony 3 c++ realloc new-operator

可能重复:
你如何realloc使用C++?

我知道realloc()如果通过malloc()或分配内存,可以重新分配(扩展)C++数组calloc().我的问题是,如何在C++中扩展其内存已通过new运算符分配的数组?

Nim*_*Nim 11

你不能 - 这就是你使用C++的原因std::vector<>.

如果你想这样做,你必须分配一个新的数组(via new),然后复制旧的项目(std::copy例如),然后复制delete[]前面的数组.

只是使用std::vector- 让它为你做所有的事情......

  • 为`std :: vector` +1. (3认同)
  • “然后复制旧项目” - 或移动它们。 (2认同)

R. *_*des 5

通常realloc,即使分配了存储,也无法重新分配C++数组malloc.malloc没有给你数组.它提供了可用存储的指针.这里有一个微妙的区别.

对于POD类型,可用存储和实际对象之间几乎没有区别.但对于非POD类型,可用存储和对象是完全不同的东西.

realloc为您提供更大比例的可用存储空间.它操纵存储而不是对象.这可能适用于POD类型,但对于其他类型,它是一个灾难的配方.