C 該如何記憶體洩漏檢測

2021-10-07 04:17:15 字數 984 閱讀 7599

mfc每乙個cpp都有以下內容

#ifdef _debug

#define new debug_new

#endif

而debug_new這個巨集定義在afx.h中,就是它幫助我們解決這個問題

這樣如果洩露就可以通過輸出視窗看見。

其中最重要的乙個是在標頭檔案中包含crtdbg.h 然後呼叫_crtdumpmemoryleaks()就可以在輸出視窗中列印;但是他是在呼叫 _crtdumpmenmoryleaks()的時候列印洩露情況,如果我們呼叫時機不對,就不能夠只檢測出來或則檢測不正確。而我們一般都是在程式退出的時候進行記憶體洩露檢測的;

這兒總結了乙個標頭檔案kdetectmemoryleak.h,其包含了crtdbg.h ,我們在需要檢測的時候的檔案中包含這個標頭檔案,然後呼叫接可以了

/*  kdetectmemoryleak.h  */

#pragma once

#ifdef _debug

#define debug_clientblock new(_client_block, __file__, __line__)

#else

#define debug_clientblock

#endif

#define _crtdbg_map_alloc

#include

#include

#ifdef _debug

#define new debug_clientblock

#endif

#include

程式在包含這個標頭檔案,且在主程式的裡面還要設定:

這樣我們就能在程式推出的時候檢測記憶體洩露了

#include

"kdetectmemoryleak.h"

void

exit()

intmain()

C 記憶體洩漏檢測

include stdafx.h ifdef debug define debug new new normal block,file line 重新定義new用於記憶體洩漏檢測時輸出行號 define debug malloc s malloc dbg s,normal block,file li...

C 記憶體洩漏檢測

今天寫乙個程式突然想檢測一下是否有記憶體洩漏,於是上網查了一下,大多數都是一種方法。只是實現略有不同,記錄如下。在你想檢測的地方都必須包含 define crtdbg map alloc include include 在程式末尾加上 crtdumpmemoryleaks debug除錯後,如果有記...

記憶體洩漏檢測

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