在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指针数组