判斷記憶體洩露的簡單方法

2021-06-22 01:52:18 字數 979 閱讀 3804



mfc提供了檢查記憶體的類cmemorystate,我們就利用這個類的物件來檢查記憶體洩露,以下是具體步驟:

一:在你所檢測的程式段的開始處建立乙個 cmemorystate 物件,呼叫其成員函式checkpoint,以取得當前記憶體使用情況的快照;

二:在你所檢測的程式段的末尾處再建立乙個 cmemorystate 物件,呼叫其成員函式checkpoint ,以取得當前記憶體使用情況的快照;

三: 再建立第三個 cmemorystate 物件,呼叫其成員函式difference,把第乙個cmemorystate 物件和第二個cmemeorystate 物件作為其引數.,如果兩次記憶體快

照不相同,則該函式返回非零,說明此程式 段中有記憶體漏洞。

下面舉個簡單的例子:

cstring *pstr = new cstring;

int *p = new int(10);

上面new了兩次,但是都沒有delete。然後你想檢查記憶體,那麼我們就按照上面步驟所講來做。

#ifdef _debug

cmemorystate oldmemstate, newmemstate, diffmemstate;

oldmemstate.checkpoint();

#endif

cstring *pstr = new cstring;

int *p = new int(10);

#ifdef _debug

newmemstate.checkpoint();

if( diffmemstate.difference( oldmemstate, newmemstate ) )

#endif

在除錯的狀態下可以觀察diffmemstate的值,icount下可以看到new的記憶體幾個沒有delete,isize下面可以看到申請的多少記憶體沒有釋放。

上例中,iconut下面的值為2,delete下面的值為14。

更多

python 判斷回文數 最簡單方法

題目 判斷字串是否是回文數 解釋 回文數就是正讀與反讀都相同 例如成語 abba 格式 1221 2112 就是回文數 python 實現最簡單回文數斷 a input 輸入 輸入字串 b a 1 倒序輸出 if a b 判斷是否相等 print 是回文數 format a format方法輸出 e...

解決占用過多記憶體的簡單方法

經常看見有人問,mssql占用了太多的記憶體,而且還不斷的增長 或者說已經設定了使用記憶體,可是它沒有用到那麼多,這是怎麼一回事兒呢?首先,我們來看看mssql是怎樣使用記憶體的。最大的開銷一般是用於資料快取,如果記憶體足夠,它會把用過的資料和覺得你會用到的資料統統扔到記憶體中,直到記憶體不足的時候...

python unittest簡單方法

下面一步步的展示如何使用unittest來測試。1 匯入unitttest模組 import unittest2 定義乙個被測試函式 def add a,b return a b3 建立乙個unittest.testcase子類 class demotest unittest.testcase pa...