タイルベースのレベルを作成しているコードがあります。
class Level {
//Variables
//===================================================
public:
Tile *** TileGrid; //A 2d array of pointers to tiles
int TilesWide, TilesTall;
//Methods
//===================================================
public:
Level::Level(char * fileName);
Level::~Level();
void Draw();
};
TileGridにメモリを割り当てましたが、すべて問題ありません。クラスにもデストラクタを設定しています。
Level::~Level() {
for (int i = 0; i < TilesTall; i++) {
for (int j = 0; j < TilesWide; j++)
//delete the looped tile being pointed to
delete TileGrid[i][j];
//delete the row
delete [] TileGrid[i];
}
//delete the array of rows
delete [] TileGrid;
}
笑い声のために、私はレベルのインスタンスを削除することにしました。そうしても、Drawメソッドを呼び出すことができることがわかりました。
デバッガーでは、TilesWideとTilesTallの値は非常に負の数であるため、グリッドを反復処理するforループには何も描画されません。
削除された変数にアクセスしようとしても、なんらかのクラッシュは発生しませんか?