【发布时间】:2013-05-05 03:13:19
【问题描述】:
我使用此代码制作了一个 3d 动态数组
//layer = 2
//levelSize.x = 100
//levelSize.y = 100
level_array = new int**[layer];
for(int i = 0; i < layer; ++i)
{
level_array[i] = new int*[(int)levelSize.x];
for(int j = 0; j < levelSize.x; ++j)
level_array[i][j] = new int[(int)levelSize.y];
}
但是当我想删除它时,程序崩溃了
for(int i = 0; i != levelSize.x; ++i)
{
for(int j = 0; j != levelSize.y; ++j)
{
delete[] level_array[i][j];
}
delete[] level_array[i];
}
delete[] level_array;
不知道删除数组的代码哪里出错了。
请帮我检查一下代码,谢谢
【问题讨论】:
-
好久没做C++了,不应该
delete[] level_array删除数组吗? -
@zachlatta,不是递归的。
-
我首先质疑有一个 3D 数组,但使用
std::vector或类似方法(最好将它包装在一个带有 1D 数组的Matrix3D类中),你不必删除任何东西. -
很可能,程序崩溃是因为您在某处超出了数组边界。
标签: c++