我有一段代码正在创建基于图块的关卡。
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 循环中没有任何内容。
尝试访问已删除的变量不会导致某种崩溃吗?
不会的一定导致崩溃。可能会,也可能不会。它会导致所谓的未定义的行为:
未定义的行为
本国际标准没有提出要求的行为
它可能会崩溃,就像毁灭宇宙一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)