如何檢視C/C++程式碼是否存在記憶體洩漏,如何定位記憶體洩漏的位置
阿新 • • 發佈:2021-02-06
本文章介紹記憶體洩漏的問題,包括兩塊內容:
1、如何檢視是否存在記憶體洩露?
#include <stdlib.h>
#include <crtdbg.h>
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif
void EnableMemLeakCheck()
{
int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(tmpFlag);
}
//
using namespace std;
int main(){
EnableMemLeakCheck();
自己的函式
}
如果存在記憶體洩漏,則會出現如下輸出:
上面花括號裡面的編號{149}可以用於定位記憶體洩漏的地方,定位方法如下:
2、如何定位到記憶體洩漏的地方?
在程式碼塊中加入【_CrtSetBreakAlloc(XXX);】,XXX裡面就是上面輸出的記憶體洩漏的編號,將該語句嵌入到上面函式中即下面程式碼:
int main(){
EnableMemLeakCheck();
_CrtSetBreakAlloc (149);
自己的函式
}
此實再次執行該函式,就會在記憶體洩漏的地方中止程式。