我做了一個名爲cell
的類。這個類裏面有一個cell
指針數組。標題是這樣的:在C++中刪除指針數組時,析構函數崩潰了
class cell
{
public:
cell();
cell *c[8];
void creatcells();
virtual ~cell();
..
}
和cpp
文件看起來像這樣:
cell::cell()
{
//ctor
for(int i=0;i<8;i++)
{
c[i]=NULL;
}
}
void cell::creatcells()
{
cell c1,c2,c3,c4,c5,c6,c7,c8;
c[0]=&c1;
c[1]=&c2;
c[2]=&c3;
c[3]=&c4;
c[4]=&c5;
c[5]=&c6;
c[6]=&c7;
c[7]=&c8;
}
cell::~cell()
{
for(int i=0; i<8; i++)
{
if (c[i]!=NULL)
{
delete c[i];
}
}
delete[] c;
}
但每次節目結束時,它崩潰,爲什麼呢?
我試過沒有if (c[i]!=NULL)
,但這沒有幫助。只有沒有for循環代碼完美結束,但我知道這也必須刪除。 我想我正確地寫了析構函數,不是嗎?
使用調試器打開程序,它將在崩潰點 – user5821508
'單元格c1,c2,c3,c4,c5,c6,c7,c8;中斷;'< - 所有這些超出了方法結尾的範圍,該地址無效。 – crashmstr
變量'c1','c2'等都不存在於函數'createcells'的範圍之外。所以存儲指向它們的指針會讓你有一個充滿懸掛指針的數組。 – CoryKramer