0

基本上,我正在编写一个 RPG 游戏,它有一个名为“Piece”的父对象类型,它代表地图上的一块或对象。Map 类有一个指向这些 Piece 对象的二维指针数组,它在 Map.h 头文件中声明为:

Piece *** level;

并且当使用带有要加载的地图目录的参数调用地图类时,它会加载地图文件并获取其尺寸。它获取要分配的地图的高度和宽度。在我的关卡数组中,我想把它当作这个 level[x][y] ,其中 x 是地图上的 x 坐标,y 是地图上的 y 坐标。我已经完成了这样的分配:

level = new Piece**[width];
for (int i = 0; i < width; i++)
{
    level[i] = new Piece*[height];
}   

我还初始化了所有元素:

for (int i = 0; i < height; i++)
    for (int k = 0; k < width; k++)
        level[k][i] = 0;

现在我的游戏可以正常运行了,但是我不知道如何释放关卡数组,所以它会导致内存泄漏。我尝试过这样的释放:

for (int i = 0; i < height; i++)
    for (int k = 0; k < width; k++)
        if (level[k][i] != 0)
            delete level[k][i];

我已经尝试了上面的代码,但无济于事。

请帮助我,我不知道如何释放这个二维指针数组,在此先感谢。

4

1 回答 1

0
vector<vector<shared_ptr<Piece>>> game_map(Y, vector<shared_ptr<Piece>>(X));
for (int y = 0; y < height; y++)
{
    for (int x = 0; x < width; x++)
    {
        // notice position of x and y
        game_map[Y][X] = make_shared<Piece>(); // or replace Piece with derived type
    }
}

无需删除任何内容。

于 2013-10-03T13:29:54.727 回答