C++ 如何释放c++;记忆向量<;int>;*嗯?

C++ 如何释放c++;记忆向量<;int>;*嗯?,c++,vector,memory-management,std,C++,Vector,Memory Management,Std,我有一个向量*arr,它实际上是一个2D数组 arr = new vector<int> [size]; arr[i]是否会自动删除,因为它是标准向量 您的代码已损坏。您应该将delete[]与new[]一起使用: delete[] arr; 一旦修复了此问题,代码将正常工作 我不得不同意评论家的看法,C风格的向量数组看起来有点疯狂。 为什么不改用矢量的矢量呢?这将为您管理内存。不,当您使用new[]时,您应该使用delete[] 但这太疯狂了。您正在为一个维度使用友好的容器,

我有一个
向量*arr
,它实际上是一个2D数组

arr =  new vector<int> [size];

arr[i]
是否会自动删除,因为它是标准向量

您的代码已损坏。您应该将
delete[]
new[]
一起使用:

delete[] arr;
一旦修复了此问题,代码将正常工作

我不得不同意评论家的看法,C风格的向量数组看起来有点疯狂。
为什么不改用矢量的矢量呢?这将为您管理内存。

不,当您使用
new[]
时,您应该使用
delete[]

但这太疯狂了。您正在为一个维度使用友好的容器,然后通过手动动态分配外部维度来消除所有的优点


相反,只需使用一个
std::vector
,或者将两个维度展平为一个向量。

您正在那里分配一个向量数组。因此,您需要删除数组:

delete [] arr;
如果您打算分配“大小”元素的向量,则需要:

arr =  new vector<int>(size); // don't use array delete for this though!
arr=新向量(大小);//但不要为此使用数组删除!

Yuk@动态分配容器。为什么?如果你为我工作,我会解雇你写这样的代码。谢谢你们的帮助,非常感谢。我试图实现向量的向量,这是一个很好的帮助,我不认为创建一个C风格的
vector
s数组“很好”。我会说它疯了,真的,真的。如果不能使用静态分配,请使用某种托管指针。如果没有其他东西,它会让你获得异常安全。这是值得+1的“但这是疯狂的”。
arr =  new vector<int>(size); // don't use array delete for this though!