VS 檢視是否有記憶體洩露的方法 定位位置
阿新 • • 發佈:2019-02-20
加入下列巨集定義:
#ifdef _DEBUG
#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)
#else
#define DEBUG_CLIENTBLOCK
#endif
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#ifdef _DEBUG
#define new DEBUG_CLIENTBLOCK
#endif
然後在main函式中呼叫下面的函式:
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
執行後將在輸出窗口出未釋放的指標的位置。去下圖:P和P1沒有釋放。
2017.7.1 補充:
,老是報如下錯誤:
error C2661: “CObject::operator new” : 沒有過載函式接受 4 個引數
後來在連結地址這篇帖子的啟發下,
將 #define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
改成 #define new DEBUG_NEW
就可以了