void node::assign_childs()
{
node *childs;
childs = new node[8];
.
.
.
child_pointer = &childs[0];
}
我很難找到一種方法來釋放「child_pointer」的內存。 「child_pointer」在struct「node」中定義,如下所示。在C++中釋放對象的內存
struct node{
vect p;
vect norm;
float s;
unsigned char r,g,b;
int fac_c;
vector<int> cfac;
bool isParent;
bool filled;
struct node* child_pointer;
node(vect, float , vect);
~node();
void assign_childs();
};
使用刪除來釋放child_pointer似乎不起作用,我也試過刪除[]。
我怎麼能建立一個析構函數釋放所有child_pointers從根節點遞歸下降?
(這是一個八叉樹,所以當我釋放一個節點節點也被釋放的時候內的所有節點)
如果我不得不改變我給你/的方式定義child_pointer使其能夠釋放它。我會怎麼做?使用8個指針的數組不是一種選擇,因爲它會使用多少內存。
這裏是我試過的析構函數。
node::~node(){
if (child_pointer != NULL){
delete [] child_pointer;
}
}
這樣做會導致我的程序出現分段錯誤。
node *octree(...);
.
.
.
delete octree;
以什麼方式看起來不起作用? – molbdnilo
沒有內存被釋放,如果我創建和刪除八叉樹內存積累和程序崩潰時,我用盡內存。 – lasvig
很確定在NULL指針上調用delete []是很安全的,所以如果可能不需要的話。 –