【发布时间】:2020-09-10 08:13:42
【问题描述】:
我有以下问题: 我使用名为 Node 的类创建了一个数据结构来表示二叉搜索树。每个节点由指向左孩子和右孩子的指针连接。
将要构建的树非常大(最多 100 万个节点),因此我需要一种方法来在每次构建树后释放内存。
树由指向根节点的指针表示:
BST_Node *bst = new BST_Node(...);
我尝试使用delete bst 并创建destructor ~BST_Node(){delete left; delete right;},但它们都不能解决问题。
内存使用率达到 99% (8GB),然后我必须终止进程以避免 PC 重新启动。
我该如何解决?谢谢
【问题讨论】:
-
变量在超出范围时被销毁,而不是被释放。
bst已被破坏,但指针具有微不足道的析构函数(不执行任何操作)。 -
不要使用原始指针。使用智能指针。它们会自动清理。
标签: c++ memory destructor delete-operator