vc6 0中如何查詢記憶體洩露

2021-05-28 01:25:17 字數 1193 閱讀 7949

自己的乙個程式這幾天在做效能測試時,發現記憶體總是會在不停增長,由最初的10m增長到了30多m。所以出現如題需求:

1.偵錯程式和 crt 除錯堆函式

#define crtdbg_map_alloc

#include

#include

注意 #include 語句必須採用上文所示順序。如果更改了順序,所使用的函式可能無法正確工作。

通過包括 crtdbg.h,將 malloc 和 free 函式對映到其「debug」版本_malloc_dbg 和_free_dbg,這些函式將跟蹤記憶體分配和釋放。此對映只在除錯版本(在其中定義了 _debug)中發生。發布版本使用普通的 malloc 和 free 函式。

#define 語句將 crt 堆函式的基版本對映到對應的「debug」版本。並非絕對需要該語句,但如果沒有該語句,記憶體洩漏轉儲包含的有用資訊將較少。

在新增了上面所示語句之後,可以通過在程式中包括以下語句來轉儲記憶體洩漏資訊:

_crtdumpmemoryleaks();//注意這條語句的擺放位置,因為這會直接影響到你的判斷結果

當在偵錯程式下執行程式時,_crtdumpmemoryleaks 將在「輸出」視窗中顯示記憶體洩漏資訊。

2.軟體測試工具-numega工具使用(boundschecker)

numega主要應用於軟體白盒測試,是乙個測試工具套件,美國compuware公司的產品。它主要包含三個工具:

2.11 boundschecker(**檢錯)

2.12 truecoverage(覆蓋率統計)

2.13 truetime(效能測試)

numega已經有多個版本,6.5、7.2、8.0等等。針對不同的開發工具,也有對應的版本,比如針對delphi的numega for delphi等。

但是,我只使用vc6.0版本的boundschecker檢測記憶體洩露

使用activecheck的具體的操作步驟如下:

2.2.1 開啟被測試專案,設定debug編譯狀態。

2.2. 選中選單的integrated debugging 和report errors and events。

這樣,除錯專案的時候,activecheck就會在後台執行,檢測並記錄錯誤。程式退出時,會自動彈出有關記憶體洩露的乙個檔案頁面

工具畢竟是工具,它按固定的演算法行事,它檢測中的部分問題,我們需要仔細斟酌,並不能完全依賴。。。。。。

vc6 0記憶體洩露

新建記憶體洩露定位類cmemleaks,所有的檔案都需要包含memleaks.h檔案,故而將其放置在stdafx.h檔案中。cpp檔案如下 memleaks.cpp implementation of the cmemleaks class.include stdafx.h include meml...

虛擬繼承記憶體除錯(VC6 0)

類繼承情況如下圖 如下 class a int a class b public virtual a class c public virtual a class d public b,public c protected private int val include using namespac...

VC6 0中如何徹底刪除類檔案

很多人為vc6.0中如何徹底刪除類檔案苦惱,有時原始檔刪除了,包含的標頭檔案也在其他類中刪除了,但是在類檢視中還是存在,很讓人鬱悶。下面告訴大家乙個徹底刪除類檔案的方法,首先 再專案中將所有涉及涉及到要刪除的類得物件和標頭檔案的引用刪除 然後 再工作目錄下將要刪除的類得標頭檔案 h 和對應的資源檔案...