【问题标题】:C++ destroy objectC++ 销毁对象
【发布时间】:2014-03-06 00:59:04
【问题描述】:

我非常理解内存泄漏的威胁。

我知道如果我创建了一个指针,我需要删除它。

但是我新建一个对象怎么样?

我需要自己销毁a吗?

c++可以自己回忆吗?

【问题讨论】:

  • 你还需要销毁对象:delete A 或内存泄漏
  • 你试过编译上面的代码吗?
  • 不,您不必担心这里的内存泄漏,因为这是不可能的。代码不会编译。 (除非你残忍地给 A 一个构造函数,它接受 A* 并且它不会释放它)
  • “我知道如果我创建了一个指针,我需要删除它。” -- 不,你不需要。

标签: c++ object memory


【解决方案1】:

正确的代码是:

A *a = new A();

你必须自己摧毁它:

delete a;

你通常只会用 new (在堆上)创建一个对象, 如果您想让它的寿命比当前范围更长。 如果您想在离开范围时销毁对象, 您只需在堆栈上分配它:

{    A a;
}

请熟悉智能指针,以防您必须在堆上分配对象 - 无需继承上世纪的 C 编程哲学!

【讨论】:

    【解决方案2】:

    new A() 返回指向对象而不是对象的指针。

    【讨论】:

      猜你喜欢
      • 2023-02-08
      • 2011-09-18
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多