qt中delete的疑问(Signal meaning : Segmentation fault)

void MyTreeWidget::clear_tree(BasaEventWidget* &root)

{

if(root == NULL) return;

for(int i=0;i<root->Childnum;i++)
{
    clear_tree(root->ChildEvent[i]);
}

delete root;
root = NULL;

}

注:BasaEventWidget 是一个窗口部件类,公有继承QWidget.
有成员变量vector ChildEvent
调用这个函数后 弹出信息Signal meaning : Segmentation fault 请问是什么原因

clear_tree(root->ChildEvent[i]);
这个是删除root下的树上的节点么?会不会导致Childnum数量改变,以及下标改变

建议你
for(int i=0;i<root->Childnum;i++)
修改为
for(int i=root->Childnum - 1;i>=0;i--)

调用 clear_tree(root->ChildEvent[i]); 这个的时候vector 下标越界了,你用qDebug打印或者断点调试,查看i的值是否大于ChildEvent 大小