我已经知道我可以在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