1. 程式人生 > 其它 >如何檢視C/C++程式碼是否存在記憶體洩漏,如何定位記憶體洩漏的位置

如何檢視C/C++程式碼是否存在記憶體洩漏,如何定位記憶體洩漏的位置

技術標籤:C++c++記憶體洩漏VS2017

本文章介紹記憶體洩漏的問題,包括兩塊內容:
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); 自己的函式 }

此實再次執行該函式,就會在記憶體洩漏的地方中止程式。