日志檔案memwatch.log中包含的資訊主要有以下幾點:
<code>*</code><code> </code>測試日期
<code>*</code><code> </code>狀态搜集器的資訊
<code>*</code><code> </code>使用MemWatch的輸出函數或宏(如TRACE等)的資訊。
<code>*</code><code> </code>MemWatch捕獲的錯誤資訊
<code>*</code><code> </code>記憶體使用的全局資訊統計,包括四點:
1)配置設定了多少次記憶體
2)最大記憶體使用量
3)配置設定的記憶體總量
4)為釋放的記憶體總數
MemWatch捕獲的錯誤記錄在日志檔案中的輸出格式如下:
message: <sequence-number> filename(linenumber), information
mwInit()和mwTerm()是對應的.是以使用了多少次mwInit(),就需要調用多少次
mwTerm()用于終止MemWatch.<code></code>
<code> </code>
如果在流程中捕獲了程式的異常中斷,那麼需要調用mwAbort()而不是
mwTerm()。即使有顯示的調用mwTerm(),mwAbort()也将終止MemWatch。
MemWatch不能確定是線程安全的。如果你碰巧使用Wind32或者你使用了線程,作為2.66,是初步支援線程的。定義WIN32或者MW_PTHREADS以明确支援線程。這會導緻一個全局互斥變量産生,同時當通路全局記憶體鍊時,MemWatch會鎖定互斥變量,但這遠不能證明是線程安全的。
從MemWatch的使用可以得知,無法用于核心子產品。因為MemWatch自身就使用了應用層的接口,而不是核心接口。但是,對于普通的應用層程式,我認為還是比較有用,并且是開源的,可以自己修改代碼實作;它能友善地查找記憶體洩漏,特别是提供的接口函數簡單易懂,學習掌握很容易,對應用層程式的單元測試會較适用。