【问题标题】:Using heap to set value in stack [duplicate]使用堆在堆栈中设置值[重复]
【发布时间】:2012-09-10 08:33:33
【问题描述】:

可能重复:
Why does the use of 'new' cause memory leaks?

我想知道,

Foo bar = *(new Foo());

可以这样做,还是我在浪费内存,因为在将值分配给bar 后我无法从堆中删除数据。

【问题讨论】:

    标签: c++ class variables pointers stack


    【解决方案1】:

    这与您预期的不同:

    1. 你在堆上创建一个永远不会被破坏的临时 = 内存泄漏

    2. 然后在堆栈上创建临时对象的 COPY。

    所以这种方法没有给你任何东西。也许你需要smart pointer

    【讨论】:

      【解决方案2】:

      这是一个即时内存泄漏,因为您在堆上丢失了对它的引用。

      但我不得不问,为什么你要为自己添加工作,而你可以简单地调用堆栈上的构造函数。

      【讨论】:

        猜你喜欢
        • 2019-03-08
        • 2011-04-13
        • 2011-09-25
        • 2018-09-13
        • 1970-01-01
        • 2017-06-06
        • 1970-01-01
        • 2016-05-28
        • 1970-01-01
        相关资源
        最近更新 更多