我有一段代码正在创建基于图块的关卡。
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;
}
为了咯咯笑,我决定删除我的 Level 实例。这样做之后,我发现我仍然可以调用它的 Draw 方法。
在调试器中,TilesWide 和 TilesTall 的值是一个巨大的负数,所以在我的 for 循环中没有任何东西会迭代网格。
尝试访问已删除的变量不会导致某种崩溃吗?