上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
babu61509 散播福音的祭司
註冊時間: 2007-08-26 文章: 142
681.01 果凍幣
|
發表於: 2009-6-2, PM 1:01 星期二 文章主題: [教學]VS使用CRT偵測Memory leak的方法 |
|
|
首先,在所有文件都需要include的.h檔放入 :
代碼: |
#ifdef _DEBUG // 檢查記憶體洩漏用(頂)
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define MYDEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__)
#define new MYDEBUG_NEW
// Replace _NORMAL_BLOCK with _CLIENT_BLOCK if you want the
//allocations to be of _CLIENT_BLOCK type
#else
#define MYDEBUG_NEW
#endif // _DEBUG
|
然後再到程式進入點貼上 :
代碼: |
#ifdef _DEBUG // 檢查記憶體洩漏用(進入點)
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif
|
這樣程式結束以後會在 輸出 那邊顯示,你有哪些檔案行數的 memory 沒有釋放掉。
完 (跑
-----------------------------------------
如果有特殊new用法,請將以下註解起來:
代碼: |
#define MYDEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__)
#define new MYDEBUG_NEW
|
不過這樣訊息就不會顯示是哪行宣告的了,所以然後改用_CrtSetBreakAlloc()在指定次數中斷來查看。(要加在程式進入點)
ex: 第45次new的時候中斷
代碼: |
_CrtSetBreakAlloc(45);
|
_________________ 已經畢業了!!
babu61509 在 2011-12-17, PM 10:29 星期六 作了第 3 次修改 |
|
回頂端 |
|
|
螢 稍嫌羞澀的路人
註冊時間: 2009-08-06 文章: 2
11.14 果凍幣
|
發表於: 2009-8-6, AM 12:17 星期四 文章主題: |
|
|
thx~~
我再googlg一下,看詳細的 |
|
回頂端 |
|
|
螢 稍嫌羞澀的路人
註冊時間: 2009-08-06 文章: 2
11.14 果凍幣
|
|
回頂端 |
|
|
|