【问题标题】:Deleting custom Object from Stack container in C++从 C++ 中的堆栈容器中删除自定义对象
【发布时间】: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


【解决方案1】:

您正在堆栈中存储指针。第一个代码示例正确地清理了指针指向的内存。 pop 本身不会这样做。它只是从堆栈中删除指针本身。

【讨论】:

    猜你喜欢
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2013-02-16
    • 2012-12-05
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多