首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >释放内存: A** mat = new A*[2];

释放内存: A** mat = new A*[2];
EN

Stack Overflow用户
提问于 2013-05-29 09:33:14
回答 2查看 119关注 0票数 5

我定义了:

代码语言:javascript
复制
A** mat = new A*[2];

但是我怎么删除它呢?使用delete[] mat;delete[] *mat;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-29 09:42:19

只有当你不做额外的分配时,它才是delete[] mat;。但是,如果您在数组的数组中分配了数组,则还需要删除它们:

代码语言:javascript
复制
A** mat = new A*[2];
for (int i = 0 ; i != 2 ; i++) {
    mat[i] = new A[5*(i+3)];
}
...
for (int i = 0 ; i != 2 ; i++) {
    delete[] mat[i];
}
delete[] mat;
票数 7
EN

Stack Overflow用户

发布于 2013-05-29 09:41:45

第一个,delete[]垫

第二个将删除数组中第一个元素所指向的内容(如果这真的是您拥有的所有代码,则不会有任何内容)它等同于delete [] mat

此外,如果数组中的指针最终指向您也想要释放的已分配内存,则必须手动删除每个元素。例如:

代码语言:javascript
复制
A** mat = new A*[2];
mat[0] = new A;
mat[1] = new A[3];

然后,您需要执行以下操作:

代码语言:javascript
复制
delete mat[0];
delete[] mat[1];
delete[] mat;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16804158

复制
相关文章

相似问题

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