c++如何檢查是否內存泄漏
今天在做OpenGL引擎的時候,突然想到檢查一下內存泄漏。具體是我做了一個渲染類Render,將所有世界中存在的物體的指針都存放在這個類中。於是我不免擔心,在Render中刪除一個物體時,是否真的把內存都釋放掉了呢?OpenGL當中各種VAO、VBO、以及我自己在類中寫的各種new語句,如果沒有在析構函數中釋放,那是很危險的。
在程序入口寫幾個語句,程序退出時,如果發現有內存泄漏,會自動在DEBUG OUTPUT窗口和DebugView中輸出內存泄漏信息
-- 引用自《如何檢查C++中的內存泄漏 vs自帶》
具體代碼如下
/////////////// detect memory leak ///////////////
int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(tmpFlag);
//////////////////////////////////////////////////
如果存在內存泄漏,在程序運行結束后,下方的輸出欄就會顯示相應的報錯信息,具體效果如下圖:
經過一番調試檢查,果然找到了一個類中有一個指針沒有釋放。