在C ++中,当delete调用析构函数时,析构函数的主体是否在释放内存之前触发?

时间:2016-07-19 19:46:59

标签: c++ binary-tree dynamic-memory-allocation

例如,我正在尝试使用此递归解构器删除二叉树:

~BinTreeNode() {
    delete left;
    delete right;
    // delete this; <- i'm assuming this is implicit, so i don't need to include it
}

如果我做delete root;,其中root是根节点,那么整个树的内存是否会被成功释放?

1 个答案:

答案 0 :(得分:8)

是。析构函数的主体在释放内存之前发生。你不需要删除它,因为你已经......所以如果你做了,那么就会发生不好的事情。