基本的に私は、マップ上のピースまたはオブジェクトを表す「ピース」と呼ばれるオブジェクトの親タイプを持つ RPG ゲームを書いています。Map クラスには、これらの Piece オブジェクトへのポインターの 2 次元配列があり、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];
上記のコードを試しましたが、役に立ちませんでした。
このポインタの 2 次元配列の割り当てを解除する方法がわかりません。よろしくお願いします。