有誰知道爲什麼這會給我一個分段錯誤?這個例子爲什麼會出現分段錯誤?
cell.h
struct cell{
bool filled;
bool isParent;
//float px,py,pz,s;
bool cx,cy,cz;
unsigned char r,g,b;
vect norm;
struct cell* parent;
struct cell* child;
cell(bool cxx=0, bool cyy=0, bool czz=0);
void open_read(string);
};
cell.cpp
cell::cell(bool cxx, bool cyy, bool czz)
{
cell childs[8]; // these lines creates a segmentation fault
child = &childs[0]; // these lines creates a segmentation fault
cx=cxx;
cy=cyy;
cz=czz;
norm = vect(0,0,0);
norm.normalize();
isParent=false;
filled=true;
}
如果這是錯誤的方式做到這一點任何人都可以點我在正確的方向如何,我可以存儲一個指針到孩子的第一個元素[8],而不是存儲8個指針,因爲它是相當密集的內存。
如果它最終會停止,它並不是真正的無限......儘管這是一種不正經的態度。 – 2013-02-10 16:31:47
@SteveWellens:對,我的意思是說他正在試圖建立一個。但你是對的。我編輯了我的答案。 – 2013-02-10 16:32:28
哦,我應該看到,我想我需要看看我可以如何改變我的程序,所以我不需要在實際需要之前調用childs的構造函數。 – lasvig 2013-02-10 16:32:42