从 C++ 中的堆栈容器中删除自定义对象
Posted
技术标签:
【中文标题】从 C++ 中的堆栈容器中删除自定义对象【英文标题】:Deleting custom Object from Stack container in C++ 【发布时间】:2021-11-10 04:22:29 【问题描述】:我有一个标准的树节点,由 3 个指向它自己类型和字符值的对象的指针组成。我正在尝试使用标准 C++ 堆栈容器将该树转换为堆栈进行解析。
以下是正常工作的一段代码。
stack<Node*> temp;
Node* trash;
...
trash = temp.top();
temp.pop();
delete(trash);
...
这可以执行我需要的操作,而不会出现任何内存泄漏;但是,如果我只使用
temp.pop();
它会在这个地方产生内存泄漏。为什么这样做?这是默认构造函数的问题吗?如果可能的话,需要做什么才能将其减少到第一个选项?或者这是执行此操作的“正确”方式?
【问题讨论】:
如果要弹出删除对象,请使用智能指针堆栈。 【参考方案1】:您正在堆栈中存储指针。第一个代码示例正确地清理了指针指向的内存。 pop
本身不会这样做。它只是从堆栈中删除指针本身。
【讨论】:
以上是关于从 C++ 中的堆栈容器中删除自定义对象的主要内容,如果未能解决你的问题,请参考以下文章