加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 删除指针数组的正确方法

发布时间:2020-12-16 10:23:30 所属栏目:百科 来源:网络整理
导读:我有一个指针数组(我通过调用new ptr * [size]创建).所有这些指针都指向一个也放在堆上的对象. 删除数组和所有新的ptr的正确方法是什么? 这就是我现在所做的: for (int i = 0; i size; i++) delete array[i];delete[] array; // Not sure since this doubl
我有一个指针数组(我通过调用new ptr * [size]创建).所有这些指针都指向一个也放在堆上的对象.

删除数组和所有新的ptr的正确方法是什么?

这就是我现在所做的:

for (int i = 0; i < size; i++) delete array[i];
delete[] array; // Not sure since this double deletes array[0]

这是否符合我的想法?

谢谢

解决方法

分配有new的每个指针都会获得相应的删除.用new []分配的每个指针都得到一个相应的delete [].这真的是你需要知道的.当然,当你有一个包含动态分配指针的动态分配数组时,释放必须以相反的顺序发生.

因此,正确的成语将是……

int main()
{
    int **container = new int*[n];
    for(int i = 0; i < n; ++i)
        container[i] = new int[size];

    // ... and to deallocate...
    for(int i = 0; i < n; ++i)
        delete [] container[i];

    delete [] container;
}

然后当然我说“停止这样做”并建议你使用std :: array或std :: vector(模板类型将是unique_ptr< int>).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读