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