2014-03-06 134 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編程哲學!