小编Rig*_*ody的帖子

c ++如何释放和删除指向对象的2D数组

在SO问题[如何在C++中分配2D指针数组] [1],接受的答案还记录了如何解除分配和删除所述数组的正确过程,即"小心删除包含的指针,行数组和列数组都是以正确的顺序分开的." 所以,我已经成功地在细胞自动机模拟程序中使用这个2D阵列.但是,我不能让这个数组的内存管理正确.除了上面的参考文献之外,我没有看到如何做到这一点的答案.

我按如下方式分配2D数组:

Object*** matrix_0 = new Object**[rows];
    for (int i = 0; i < rows; i++) {
        matrix_0[i] = new Object*[cols];
    }
Run Code Online (Sandbox Code Playgroud)

我徒劳地尝试(根据Valgrind)正确地取消分配上面的数组如下:

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        matrix_0[i][j] = NULL;
    }
}
delete [] matrix_0;
matrix_0 = NULL;
Run Code Online (Sandbox Code Playgroud)

很明显,我错过了行和列部分作为参考[1]建议.你能告诉我我错过了什么吗?提前致谢.

[1] :( 2009年11月20日)如何在C++中分配2D指针数组

c++ arrays pointers

0
推荐指数
1
解决办法
5474
查看次数

标签 统计

arrays ×1

c++ ×1

pointers ×1