本文主要講述windows mobile中檢測內存泄漏的方法,只能檢測用new/delete操作的內存。主要思想就是重載new運算符和delete運算符。主要步驟如下:
1、在new操作中記錄下此次內存分配的情況,比如:分配內存的文件名/行號、分配了多少字節等。在delete操作中把保存的相應的記錄刪除。經過這樣的操作以後,在需要的時候就可以把所有未釋放的內存的信息打印出來。
2、重載完new和delete運算符以後,在每個需要查找內存泄漏的文件中,加上如下定義:
#define new ::new(參數1,參數2….),就是定義一個宏,把分配內存的操作轉到我們自己的new函數中,注意:要把這個宏定義到所有包含文件操作的後面,因爲有些文件也會定義這種宏,比如MFC的
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
這時候,我們的宏定義就需要定義到這一段的後面。
3、重載相應的局部new/delete運算符,比如MFC的CObject類就重新定義了new/delete操作符,所以從CObject類繼承而來的類,則需要重載CObject的new/delete操作符,把new/delete操作重新轉到我們自定義的函數中,不然會出new和delete不匹配的問題,就是會報告錯誤的內存泄漏。