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

Reallocating memory of a C++ array.

本文关键字:C++ 数组 内存 分配 新分配      更新时间:2023-10-16

可能重复:
如何在C++中realloc

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

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

如果要执行此操作,则必须分配一个新数组(通过new),然后跨(例如,std::copy)复制旧项,然后跨上一个数组复制delete[]

只需使用std::vector——让它为你做所有这些事情。。。

通常,C++阵列不能用realloc重新分配,即使存储是用malloc分配的。malloc不会为您提供数组。它提供指向可用存储的指针。这里有一个微妙的区别。

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

realloc为您提供了更大的可用存储空间。它操作存储而不是对象。这对POD类型来说可能很好,但对其他类型来说,这会带来灾难。

使用::std::vector

查看此问题或此问题以了解更多详细信息。