我已經知道我可以在Linux上跟蹤mtrace
和valgrind
的代碼中的內存泄漏,這兩者都不適用於Windows。你會推薦哪個Windows程序來跟蹤內存泄漏?在Windows上的C代碼中查找內存泄漏
我是Eclipse用戶,現在我一直在用C工作一兩個月,所以我比較高級的更喜歡用戶友好的解決方案。
我已經知道我可以在Linux上跟蹤mtrace
和valgrind
的代碼中的內存泄漏,這兩者都不適用於Windows。你會推薦哪個Windows程序來跟蹤內存泄漏?在Windows上的C代碼中查找內存泄漏
我是Eclipse用戶,現在我一直在用C工作一兩個月,所以我比較高級的更喜歡用戶友好的解決方案。
應用程序驗證將做到這一點相當不錯,http://msdn.microsoft.com/en-us/library/ms220948.aspx
見Purify並可能Insecure++
您可以使用_CrtDumpMemoryLeaks。我想它和mtrace很相似。
可以例如掛鉤如下所述的可視檢漏儀: http://www.codeproject.com/KB/applications/visualleakdetector.aspx
另一種方法是計算特定操作之前和之後使用的內存量。像這裏描述的那樣:msdn.microsoft.com/en-us/library/aa293901%28VS.60%29.aspx 像這樣的東西可以很容易地添加到例如自動單元測試。
還有就是,這樣做,在C線每對malloc
的常識方式有一個free
,如果沒有有泄漏,也同爲GlobalAlloc
,VirtualAlloc
,HeapAlloc
, LocalAlloc
,VirtualAllocEx
...有關聯的...Free
對他們,例如上運行變量「富」一個HeapAlloc
例如,並且沒有HeapFree
爲「富」,這是一個泄漏...
希望這幫助, 最好的問候, 湯姆。
+1。好建議。 – 2010-02-21 19:23:29
由於我對C mtrace的有限知識可能會說我做了x個malloc和x個釋放量,但我對Application Verifier感到非常困惑,但Application Verifier似乎做了太高級的事情讓我無法理解。 – Pieter 2010-02-21 20:13:17
AppVerifier嘗試模擬在最差情況下運行的應用程序,然後在出現任何問題時切入調試程序。其中一件事情就是泄漏,它會自動記錄是誰分配的。 – 2010-02-21 21:53:33