(
這裡
,和
)
,
VS
本身即具有記憶體洩露檢測機制,只需做如下設定,在
debug
模式下以
F5
執行:
方法一:
//
在入口函式
cpp
中新增以下定義和標頭檔案
#define CRTDBG_MAP_ALLOC
#include
在入口函式中包含
_CrtDumpMemoryLeaks();
即可檢測到記憶體洩露
以如下測試函式為例:
int main()
{
char* pChars = new char[10];
return 0;
}
執行輸出視窗會得到:
Detected memory leaks!
Dumping objects ->
{126} normal block at 0x002A4630, 10 bytes long.
Data:
> CD CD CD CD CD CD CD CD CD CD
Object dump complete.
注意:
1.
在
VS2010
下測試的時候,發現
這句必須放在
函式結束處
,放
在主函式入口處輸出視窗不會輸出記憶體洩露資訊
2.{}
中的數字指明這塊記憶體是程式中總計第幾個被申請的,這種方法沒有行號和其他資訊輸
出。我們可以定義:
#ifdef _DEBUG
#define new
new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif
輸出:
Dumping objects -
(
這裡
,和
這裡
)
,
VS
本身即具有記憶體洩露檢測機制,只需做如下設定,在
debug
模式下以
F5
執行:
方法一:
//
在入口函式
cpp
中新增以下定義和標頭檔案
#define CRTDBG_MAP_ALLOC
#include
#include
在入口函式中包含
_CrtDumpMemoryLeaks();
即可檢測到記憶體洩露
以如下測試函式為例:
int main()
{
char* pChars = new char[10];
_CrtDumpMemoryLeaks();
return 0;
}
F5
執行輸出視窗會得到:
Detected memory leaks!
Dumping objects ->
{126} normal block at 0x002A4630, 10 bytes long.
Data:
> CD CD CD CD CD CD CD CD CD CD
Object dump complete.
注意:
1.
在
VS2010
下測試的時候,發現
_CrtDumpMemoryLeaks();
這句必須放在
函式結束處
,放
在主函式入口處輸出視窗不會輸出記憶體洩露資訊
2.{}
中的數字指明這塊記憶體是程式中總計第幾個被申請的,這種方法沒有行號和其他資訊輸
出。我們可以定義:
#ifdef _DEBUG
#define new
new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif
輸出:
Detected memory leaks!
Dumping objects -