void node::assign_childs()
{
node *childs;
childs = new node[8];
.
.
.
child_pointer = &childs[0];
}
我很难找到释放“child_pointer”内存的方法。“child_pointer”在结构“node”中定义,如下所示。
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();
};
使用 delete 来释放 child_pointer 似乎不起作用,我也尝试过 delete []。
我如何创建一个析构函数来从根节点递归释放所有 child_pointers?
(这是一个八叉树,所以当我释放一个节点时,该节点内的所有节点也会被释放)
如果我必须更改分配/定义 child_pointer 的方式以使其可以释放它。我该怎么做?使用 8 个指针的数组不是替代方法,因为它会占用大量内存。
这是我尝试过的析构函数。
node::~node(){
if (child_pointer != NULL){
delete [] child_pointer;
}
}
这样做会使我的程序因分段错误而崩溃。
node *octree(...);
.
.
.
delete octree;