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

时间:2012-03-06 15:11:49

标签: c++ new-operator realloc

  

可能重复:
  How do you realloc in C++?

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

3 个答案:

答案 0 :(得分:11)

你不能 - 这就是为什么在C ++中你使用std::vector<>

如果你想这样做,你必须分配一个新数组(通过new),然后复制旧项目(例如std::copy),然后delete[]上一个数组。

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

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:0)

使用::std::vector

请查看this questionthis question了解详情。