C++ 销毁对象

use*_*639 -2 c++ memory object

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

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

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

我需要自己销毁一个吗?

C++ 能自己回忆起来吗?

小智 7

正确的代码是:

A *a = new A();
Run Code Online (Sandbox Code Playgroud)

你必须自己销毁它:

delete a;
Run Code Online (Sandbox Code Playgroud)

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

{    A a;
}
Run Code Online (Sandbox Code Playgroud)

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