【发布时间】:2021-11-10 04:22:29
【问题描述】:
我有一个标准的树节点,由 3 个指向它自己类型和字符值的对象的指针组成。我正在尝试使用标准 C++ 堆栈容器将该树转换为堆栈进行解析。
以下是正常工作的一段代码。
stack<Node*> temp;
Node* trash;
...
trash = temp.top();
temp.pop();
delete(trash);
...
这可以执行我需要的操作,而不会出现任何内存泄漏;但是,如果我只使用
temp.pop();
它会在这个地方产生内存泄漏。为什么这样做?这是默认构造函数的问题吗?如果可能的话,需要做什么才能将其减少到第一个选项?或者这是执行此操作的“正确”方式?
【问题讨论】:
-
如果要弹出删除对象,请使用智能指针堆栈。
标签: c++ memory-management tree stack