Visual Studio中檢測記憶體洩漏的方法
阿新 • • 發佈:2018-11-04
#include <iostream> //可以定位到發生記憶體洩露 所在的檔案和具體那一行,用於檢測 malloc 分配的記憶體 #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> //把分配記憶體的資訊儲存下來,可以定位到那一行發生了記憶體洩露。用於檢測 new 分配的記憶體 #ifdef _DEBUG #define new new(_NORMAL_BLOCK, __FILE__, __LINE__) #endif //有用 inline void EnableMemLeakCheck() { //該語句在程式退出時自動呼叫 _CrtDumpMemoryLeaks(),用於多個退出出口的情況. //如果只有一個退出位置,可以在程式退出之前呼叫 _CrtDumpMemoryLeaks() _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); } int main(int argc, char* argv[]) { EnableMemLeakCheck(); //執行到 第 191 次 記憶體分配的時候停下來 //_CrtSetBreakAlloc(149); char* p = new char[100]; char* p1 = new char[200]; char* p2 = (char*)malloc(600); delete p; getchar(); //_CrtDumpMemoryLeaks();//這個程式碼好像會輸出額外多餘的記憶體分配資訊 return 0; }