我想專注於當我們說刪除ptr時會發生什麼。我知道我們的類的析構函數被調用,然後回收新分配的空間量。「刪除」如何回收內存?
如果我們的對象有其他指針等等,那麼是否會被回收呢,還是由我們的構造函數定義呢?
我想專注於當我們說刪除ptr時會發生什麼。我知道我們的類的析構函數被調用,然後回收新分配的空間量。「刪除」如何回收內存?
如果我們的對象有其他指針等等,那麼是否會被回收呢,還是由我們的構造函數定義呢?
如果刪除的對象有指向其他對象或內存塊的指針,那麼不是,如果您的對象被刪除,則這些對象不會自動刪除。你必須自己照顧自己;在你的對象類的析構函數中最適合做這件事的地方很可能。
如果你沒有正確釋放所有內存,那麼你的程序有內存泄漏。
析構函數負責清理對象擁有的所有資源。這包括在需要它的指針上調用delete
。如果你的析構函數不這樣做,那麼你會得到一個內存泄漏。
如果您的對象具有自動存儲持續時間的成員,則會自動調用這些成員的析構函數。這是RAII的基礎。
這取決於您的析構函數(而不是構造函數)的定義。