Effective_C++:6、記得在destructor中以delete對付pointer members

6、記得在destructor中以delete對付pointer members

1、在constructor中添加pointer members

        class要進行動態配置內存,會在構造函數裏以new配置內存,在析構函數裏delete釋放內存。因此必須記得所有在構造函數裏被分配內存的成員並delete。

        在class中添加pointer member,幾乎總是需要:

1.在每個構造函數裏將指針初始化,若沒有構造函數爲他配置內存,應將其初始化爲0(NULL指針)。

2.在重載賦值運算符的函數中,將指針原有內存刪除並重新配置。

3.在析構函數刪除這個指針。

2、忘記delete

        如果忘記在構造函數裏初始化指針或忘了在賦值運算符中處理指針,通常簡單的測試就能發現他們。然而,如果沒有在析構函數delete指針,運行代碼不會有明顯的錯誤,但是程序卻存在着內存泄漏,會慢慢佔據整個內存空間,最終無內存可用。

3、在destructor中以delete對付pointer members

        另外,delete空指針是安全的,但該與new配對使用,而除了智能指針對象外幾乎不該delete傳遞而來的指針。
        智能指針,避免必須delete 指針的方法之一就是使用使用智能指針對象替代他,程序會在結束時自動調用析構函數,銷燬對象,釋放內存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章