2014-03-06 137 views
-4

我认真了解内存泄露的威胁。C++销毁对象

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

但是,我新的一个对象呢?

我是否需要自己摧毁一个?

C++是否可以通过它自我回忆它?

+0

您还需要销毁该对象:'删除A'或mem漏洞 – yizzlez

+2

您是否尝试编译上述代码? – tinkertime

+1

不,你不需要担心这里的内存泄漏,因为这是不可能的。代码不会编译。 (除非你虐待'A'构造函数,它需要一个'A *'并且它不释放它) – Cornstalks

回答

2

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

4

正确的代码是:

A *a = new A(); 

,你就必须自己销毁它:

delete a; 

你会通常只有创建新的对象(在堆上), 如果你想让它的寿命比现在的范围更长。 如果你想有离开的范围时销毁对象, 你只需将它分配在堆栈上:

{ A a; 
} 

请让自己熟悉的情况下,智能指针,你必须分配在你的对象堆 - 无需继承上个世纪的C编程哲学!