C ++析构函数中的堆栈溢出

时间:2015-11-23 08:50:58

标签: c++ stack-overflow destructor

我尝试创建detor并获得了#34; Stack Overflow" 我知道为什么,但我想要它的工作......

#include <iostream>
#include "printTreeToFile.h"
#include "BSNode.h"
#define _BS BSNode::
#define _BSNode _BS BSNode
_BS ~BSNode()
{
    Del(this);
}
void _BS Del(BSNode *x,int y)
{
    if (x->isLeaf())
    {
        delete x;
        return;
    }
    if (x->_Right != NULL)
        Del(x->_Right,y += 1);
    if (x->_Left != NULL)
        Del(x->_Left,y += 1);
    if (y != 1)
    {
        delete x;
    }
    return;
}

我尝试将其作为递归但删除调用Del所以 我们得到了无限循环

1 个答案:

答案 0 :(得分:1)

通过调用delete x,当您处于称为节点析构函数的函数中时,您正在调用节点的析构函数。没有必要在析构函数中销毁实际对象。