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- 让它为你做所有的事情......
通常realloc,即使分配了存储,也无法重新分配C++数组malloc.malloc没有给你数组.它提供了可用存储的指针.这里有一个微妙的区别.
对于POD类型,可用存储和实际对象之间几乎没有区别.但对于非POD类型,可用存储和对象是完全不同的东西.
realloc为您提供更大比例的可用存储空间.它操纵存储而不是对象.这可能适用于POD类型,但对于其他类型,它是一个灾难的配方.