【发布时间】:2015-03-31 07:08:56
【问题描述】:
我有一个对象指针的二维数组,我正在尝试为一个对象编写一个释放器,以删除数组中的两个指针,然后删除数组本身。我在要销毁的对象的标头中定义数组,就像这样
space* board[6][6];
我这样分配数组中的空间对象:
board[0][0]= new space(1,0);
board[0][1] = new space(1, 0);
board[0][2] = new space(1, 0);
我现在的析构函数是这样的
for (int i = 0; i < 6; ++i)
{
for (int j = 0; j < 6; ++j){
delete board[i][j];
}
delete[] board[i];
}
delete[] board;
执行此操作时,我收到以下消息:Blitz.exe 中 0x5080A9E8 (msvcr120d.dll) 处出现未处理异常:0xC0000005:访问冲突读取位置 0xFEEEFEE2。
我不太确定该怎么做,我试过环顾四周,似乎我的析构函数应该没问题。我知道如果我受过良好的编程教育,我会使用更好的东西,比如向量或其他东西。我下载了一份关于这些天人们如何实际使用 C++ 的 pdf 文件,我可能很快就会复习一遍,但我宁愿处理这个内存泄漏并继续前进。
【问题讨论】:
-
你真的需要使用动态分配的对象吗?
标签: c++ arrays pointers delete-operator