【问题标题】:Delete pointer to 2d array删除指向二维数组的指针
【发布时间】:2012-11-23 16:40:02
【问题描述】:

我有一个指向机器人类二维数组的指针

Robot ***rob; 

下面是我的构造函数代码。构造函数工作正常,但现在我正在尝试构建一个析构函数来删除这个指针,它一直在使程序崩溃!

我的问题是,如何删除指向二维机器人数组的指针?

RobotsWorld::RobotsWorld(int x , int y)
{
    X=x;Y=y; // returns the limitation of the matrix 
    rob = new Robot**[x];
    for(int i = 0; i < x; i++)
    {
        rob[i] = new Robot*[y];

        for(int j = 0; j < y; j++)
        {
            rob[i][j] = NULL;
        }
    }
}

【问题讨论】:

  • 您将指针设置为空,而不是删除它。
  • 你正在做一个你可以用指针做的最危险的事情之一,当你考虑删除它时将它设置为 NULL;您可能想采用智能指针并为自己省去很多麻烦。

标签: c++ arrays pointers


【解决方案1】:
// Code is not tested
for(int i = 0 ; i < x ; ++i)
{
    for(int j = 0 ; j < y ; ++j)
    {
        delete rob[i][j];
    }
    delete[] rob[i];
}
delete[] rob;

对了,为什么要设置rob[i][j] = NULL;

我认为应该是:rob[i][j] = new double;

【讨论】:

  • 我试过这样做,但程序仍然崩溃,当它进入 delete[] rob[i][j];当值为空时它很酷,否则它会崩溃:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 2012-01-26
  • 1970-01-01
相关资源
最近更新 更多