删除3d动态数组C++

ara*_*n0n 1 c++

我使用此代码制作了一个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];
    }
Run Code Online (Sandbox Code Playgroud)

但是当我想删除它时,程序崩溃了

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;
Run Code Online (Sandbox Code Playgroud)

我不知道删除数组的代码在哪里出错了.

请帮我查一下代码,谢谢

awe*_*oon 8

您可以为具有维度的数组分配内存[layer][levelSize.x][levelSize.y],但在删除时,您可以像使用带维的数组一样操作它[levelSize.x][levelSize.y][somenting].

for(int i = 0; i != layer; ++i)
//                  ^^^^^ not levelSize.x
{
    for(int j = 0; j != levelSize.x; ++j)
    //                  ^^^^^^^^^^^ not levelSize.y
    {
        delete[] level_array[i][j];
    }
    delete[] level_array[i];

}
delete[] level_array;
Run Code Online (Sandbox Code Playgroud)