1
当我运行析构函数,我得到一个运行失败,我不知道为什么这里是我的树头C++的析构函数
class ExpressionTree {
private:
ExpressionNode* root;
public:
ExpressionTree() :
hashmap(100000),
root(NULL) {
};
virtual ~ExpressionTree(){
helper(root);
}
void helper(ExpressionNode *node) {
if (!node) {
return;
} else {
helper(node->getLeft());
helper(node->getRight());
delete node;
}
}
};
和我的节点头
class ExpressionNode {
private:
ExpressionNode* left;
ExpressionNode* right;
string data;
public:
virtual ~ExpressionNode(){
delete left;
delete right;
}
};
现在一切如果在ExpressionTree类中工作的很好,我只会销毁根,但我相信我是以这种方式泄漏内存的。这实际上是正确的方式还是有我的递归破坏有什么问题。
您正在删除内存两次。不要这样做!并初始化指向'nullptr'的指针,否则您将尝试删除随机内存。 – tkausl