首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何释放c++ memory vector<int> * arr?

如何释放c++ memory vector<int> * arr?
EN

Stack Overflow用户
提问于 2011-09-26 22:00:57
回答 3查看 1.4K关注 0票数 4

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

代码语言:javascript
复制
arr =  new vector<int> [size];

我就这么做可以吗

代码语言:javascript
复制
delete arr;

arr[i]会被自动删除吗,因为它是一个标准向量?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-26 22:05:08

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

但这太疯狂了。您对一个维度使用了友好的友好容器,然后通过对外部维度使用手动动态分配来取消所有的好处。

取而代之的是,只需使用std::vector<std::vector<int> >,或者将两个维度展平为单个向量。

票数 10
EN

Stack Overflow用户

发布于 2011-09-26 22:02:44

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

代码语言:javascript
复制
delete[] arr;

一旦你修复了这个问题,你的代码就会正常工作。

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

票数 6
EN

Stack Overflow用户

发布于 2011-09-26 22:06:51

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

代码语言:javascript
复制
delete [] arr;

如果你打算分配一个包含'size‘元素的向量,你需要:

代码语言:javascript
复制
arr =  new vector<int>(size); // don't use array delete for this though!
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7556255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档