所以我似乎無法找出爲什麼我泄漏內存,任何人都可以幫忙嗎?我已經實現了一個二叉搜索樹operator=:
二元搜索樹賦值運算符內存泄漏
BinTree& BinTree::operator=(const BinTree &other)
{
if (other.root == NULL)
root = NULL;
else
{
copyHelper(root, other.root);
}
return *this;
}
copyHelper:
void BinTree::copyHelper(Node *¤t, const Node *other)
{
if (other == NULL)
current = NULL;
else
{
current = new Node;
current->data = other->data;
copyHelper(current->left, other->left);
copyHelper(current->right, other->right);
}
}
我明白current = new Node;
是在泄漏發生的事情,但我的程序崩潰,如果我嘗試在該行之前做delete current;
。
這裏是我的析構函數:
BinTree::~BinTree()
{
destroyRecursive(root);
}
void BinTree::destroyRecursive(Node *node)
{
if (node)
{
destroyRecursive(node->left);
destroyRecursive(node->right);
delete node;
}
}
那麼你的'Node'析構函數是什麼樣的?注意你還需要深入複製'data',不清楚這是否發生。 – EJP
你不會顯示一個'delete',所以任何人應該怎麼評論潛在的泄漏? – John3136
@EJP我加了析構函數 – user3138251