2011-12-20 39 views
1

我想專注於當我們說刪除ptr時會發生什麼。我知道我們的類的析構函數被調用,然後回收新分配的空間量。「刪除」如何回收內存?

如果我們的對象有其他指針等等,那麼是否會被回收呢,還是由我們的構造函數定義呢?

回答

2

如果刪除的對象有指向其他對象或內存塊的指針,那麼不是,如果您的對象被刪除,則這些對象不會自動刪除。你必須自己照顧自己;在你的對象類的析構函數中最適合做這件事的地方很可能。

如果你沒有正確釋放所有內存,那麼你的程序有內存泄漏。

3

析構函數負責清理對象擁有的所有資源。這包括在需要它的指針上調用delete。如果你的析構函數不這樣做,那麼你會得到一個內存泄漏。

如果您的對象具有自動存儲持續時間的成員,則會自動調用這些成員的析構函數。這是RAII的基礎。

1

這取決於您的析構函數(而不是構造函數)的定義。