<分区>
我有一段代码可以创建基于图 block 的关卡。
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 循环迭代网格时没有绘制任何内容。
尝试访问已删除的变量不会导致某种崩溃吗?