VS2005記憶體洩漏檢測方法

2021-05-27 20:58:08 字數 1595 閱讀 7005

非mfc程式可以用以下方法檢測記憶體洩露:

1.程式開始包含如下定義:

#ifdef _debug

#define debug_clientblock new( _client_block, __file__, __line__)

#else

#define debug_clientblock

#endif  // _debug

#define _crtdbg_map_alloc

#include

#include

#ifdef _debug

#define new debug_clientblock

#endif  // _debug

2.程式中新增下面的函式:

_crtsetdbgflag(_crtdbg_alloc_mem_df|_crtdbg_leak_check_df);

debug版本程式執行結束後如有記憶體洩漏,輸出視窗中會顯示類似資訊:

detected memory leaks!

dumping objects ->

g:\programs\test\test.cpp(16) : client block at 0x00385c58, subtype 0, 4 bytes long.

data: <    > cd cd cd cd 

object dump complete.

mfc程式記憶體洩漏檢測方法:

#ifdef _debug

protected:

cmemorystate m_msold, m_msnew, m_msdiff;

#endif  // _debug

#ifdef _debug

m_msold.checkpoint();

#endif  // _debug

#ifdef _debug

m_msnew.checkpoint();

if (m_msdiff.difference(m_msold, m_msnew))

#endif  // _debug

debug版本程式執行結束後如有記憶體洩漏,輸出視窗中會顯示類似資訊:

memory leaked :

0 bytes in 0 free blocks.

8 bytes in 1 normal blocks.

0 bytes in 0 crt blocks.

0 bytes in 0 ignore blocks.

0 bytes in 0 client blocks.

largest number used: 8825 bytes.

total allocations: 47506 bytes.

dump complete !

detected memory leaks!

dumping objects ->

g:\programs\chat\chatdlg.cpp(120) : normal block at 0x00d98150, 8 bytes long.

data: <        > a8 7f d9 00 01 00 00 00 

object dump complete.

記憶體洩漏檢測

一 記憶體洩漏 記憶體洩漏是程式設計中常常見到的乙個問題.記憶體洩漏往往會一種奇怪的方式來表現出來,基本上每個程式都表現出不同的方式.但是一般 最後的結果只有兩個,乙個是程式當掉.乙個是系統記憶體不足.還有一種就是比較介於中間的結果程式不會當,但是系統的反映時間明顯降低,需要定時的 reboot才會...

記憶體洩漏檢測

一 記憶體洩漏 記憶體洩漏是程式設計中常常見到的乙個問題.記憶體洩漏往往會一種奇怪的方式來表現出來,基本上每個程式都表現出不同的方式.但是一般最後的結果只有兩個,乙個是程式當掉.乙個是系統記憶體不足.還有一種就是比較介於中間的結果程式不會當,但是系統的反映時間明顯降低,需要定時的reboot才會正常...

記憶體洩漏檢測

記憶體洩漏檢測 自己寫的 作者 很土 關鍵字 記憶體洩漏 記憶體 debug heap 堆 原作者姓名 很土 介紹簡單說明了一下沒有工具的情況如何運用vc庫中的工具來檢查 的記憶體洩漏問題 讀者評分 8 評分次數 2 正文記憶體洩漏檢測 一 記憶體洩漏 記憶體洩漏是程式設計中常常見到的乙個問題.記憶...