繁体   English   中英

如何释放c ++内存向量 <int> * arr?

[英]How to free c++ memory vector<int> * arr?

我有一个vector<int>* arr ,它实际上是一个2D数组。

arr =  new vector<int> [size];

我这样做是否可以

delete arr;

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

不,你在使用delete[]时应该使用delete[] new[]

但这很疯狂。 你在一个维度上使用了友好的快乐友好容器,然后通过手动动态分配外部维度来取消所有的好处。

相反,只需使用std::vector<std::vector<int> > ,或将两个维度展平为单个向量。

你的代码坏了。 你应该使用delete[]new[]

delete[] arr;

解决此问题后,您的代码将正常运行。

我必须同意评论者的说法,C风格的矢量数组看起来有点疯狂。 为什么不使用向量矢量呢? 那将为您处理内存管理。

你在那里分配一个向量数组。 所以你需要删除数组:

delete [] arr;

如果您打算分配'size'元素的向量,则需要:

arr =  new vector<int>(size); // don't use array delete for this though!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM