【发布时间】:2016-03-02 01:11:03
【问题描述】:
我正在尝试删除指向动态分配的整数指针的指针,但是当我关闭程序时出现意外错误。
一、头文件中的声明
class TileMapManager
{
public:
//Some public constructor, destructor and some functions...
private:
// Other private data...
int m_xSize;
int m_ySize;
int **m_mapSlots;
};
下面的分配...
m_mapSlots = new int*[m_ySize];
for (int i = 0; i < m_xSize; ++i)
m_mapSlots[i] = new int[m_xSize];
和释放功能。我在析构函数中调用它。
void TileMapManager::ReleaseTilemap(void)
{
ReleaseTileTexture();
for (int y = 0; y < m_ySize; ++y)
delete m_mapSlots[y]; // <- break!
delete m_mapSlots;
}
我的程序已在该行触发断点。
我认为删除的方式是好的,但我不知道为什么它会导致问题。 请帮帮我。
【问题讨论】:
-
不要为 C++ 问题添加 C 标签!它们是不同的语言。
-
m_xSize在一个循环条件下,m_ySize在另一个循环条件下。你已经越界了。 -
对二维数组的不正确仿真的另一个不明智的尝试。