2012-11-23 55 views
0

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

Robot ***rob; 

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

我的问题是,如何删除指向2d机器人阵列的指针?

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; 
     } 
    } 
} 
+0

你设置的指针NULL,而不是将其删除。 – Aaron

+2

你正在做一个你可以用指针做的最危险的事情,当你想要删除它时将它设置为NULL;你可能想要采用智能指针并为自己节省很多麻烦。 – user1802174

回答

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;

+0

我试过这样做,但程序仍然崩溃,当它进入删除[]抢[我] [J];而价值是零它很酷,否则它崩溃:( –

+0

不'删除[]抢[我] [J]',它是'删除抢[我] [J]' – bhuang3

+0

是啊,它现在的作品:),THX: ) 你很棒 :) –