2012-11-23 57 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: ) 你很棒 :) –