關於記憶體洩漏的檢查網上有很多的例子和**,其基本的方法都是用巨集,替換掉記憶體分配以及釋放的函式。但是現在網上很多的例子中沒有乙個是適合我們公司的需求的。
具體的對記憶體洩漏檢查有如下要求:
1. 記憶體洩漏檢查的**盡可能少的占用cpu及記憶體
2. 盡可能的不影響原程式
因為,我們的伺服器程式有洩漏而且是特殊情況下會洩漏,平時很難模擬出來。
對於這種情況下的記憶體洩漏我以前的做法如下:
1. 用寫檔案的方法記錄所有的記憶體分配以及釋放的操作
2. 再寫乙個工具去分析所有的記錄,從中找出洩漏的**
這樣做需要大量的硬碟空間,不過,這個無所謂了現在硬碟很便宜!
不過需要考慮到伺服器程式當中包含了exe以及多個dll,為了通用,記憶體洩漏檢查分為下面幾個部分:
1. imemleak.h imemleak.cpp 加入每乙個模組當中
2. memleaklog.dll 統一記錄所有的記憶體操作,將其記錄到檔案當中
3. memchecktool.exe 分析工具
注意:a. 輸出的目錄我是寫死了,在d:\memleak_log
b. 在被檢查工程裡面請增加/fc選項。project->properties->configuration->c/c++->advanced->use full path yes(/fc)
c. memleaklog.dll 拷貝到與被檢查記憶體洩漏的程序所在的目錄下面
記憶體洩漏檢查
1.乙個指標多次進行賦值時,每次賦值後使用完後要釋放記憶體 coffsetcoedgemap poffsetcoedgemap polygonoffset ppoly,retpolygon,doffsetdis,enextend,0.1 expect true g ovldmgr.isvalid r...
SPDisposeCheck記憶體洩漏檢查工具的使用
spdisposecheck是開發sharepoint專案必不可少的工具之一,用它可以檢測出我們寫的 是否正確銷毀掉諸如spsite或者spweb之類的 資源消耗大戶 你開啟乙個spsite或者spweb物件 將占用1m到2m的記憶體,如果你不斷開啟此類物件並沒有及時關閉,那麼你的記憶體就會很快被消...
記憶體洩漏檢查的常識
幫助除錯記憶體錯誤的方法一 對已經分配或者釋放的記憶體寫入確定的位元組作為標識,以幫助暴露程式中的錯誤 0xcd 已經分配的資料 allocated data 0xdd 已經釋放的資料 deleted data 0xfd 被保護的資料 fence data 其中保護位元組被寫入在被保護記憶體區域的開...