1. 程式人生 > >C++記憶體管理之一(檢測記憶體洩露) 轉

C++記憶體管理之一(檢測記憶體洩露) 轉

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
該語句在程式退出時自動呼叫 _CrtDumpMemoryLeaks。必須同時設定 _CRTDBG_ALLOC_MEM_DF 和 _CRTDBG_LEAK_CHECK_DF.
這樣,該版本已經達到了MFC一樣的效果了,但是我覺得光這樣還不夠,因為我們只是在Output視窗中輸出資訊,對開發人員的提醒還不明顯,經常會被遺漏,而且很多人就算髮現了記憶體洩露,但是不好修復,不會嚴重影響到程式外在表現,都不會修復。怎麼樣能讓開發人員主動的修復記憶體洩露的問題呢?記得曾經和人配合寫程式,我的函式引數有要求,不能為空,但是別人老是傳空值,沒辦法了,只好在函式開始驗證函式引數,給他assert住,這樣程式執行時老是不停的彈出assert,除錯程式那個煩壓,最後其他程式設計師煩了,就把這個問題給改好了,輸入引數就正確了。所以我覺得咱要讓程式設計師主動去做一件事,首先要讓他覺得做這個事是能減輕自己負擔,讓自己工作輕鬆的。呵呵,那咱們也這樣,當程式退出時,檢測到記憶體洩露就讓程式提示出來。
檢測記憶體洩露版本四: