说说你如何查内存泄漏 memory leak
近来突然看想了解一下自己写的东西是不是有内存泄漏。
首先我先自己说一下我怎样找的吧,我用的是VS2008.
1 在VS2008的MFC工程里面(或者其他工程也可以用_CrtDumpMemoryLeaks),可以在debug下,程序结束时提示有没有内存泄漏。
2 可以用BoundsChecker之类的工具,我试过在VC6的,得到的结果其实跟VS2008的提示差不多,只是那时在VC6里面的没有,也没有试用过更新的版本。
3 让程序长时间运行,看task manager的内存是不是增加之类的。
4 用Windbg,我试过查句柄泄漏的,也比较方便。
我其实最想知道有这样的,就是在Debug下,按F5运行程序,一段时间后再按Shift+F5,退出,这样也有内存泄漏的提示如果有内存泄漏的话。上面说的1,2方法都是要程序退出时才提示的,如关闭对话框,而不是按Shift+F5的情况,那样是没有提示的。
我想在Shift+F5后就提示主要是因为有一些程序是服务程序,是开机就运行的,没窗口;另外就是如果这样就能提示那么可以早一些发现问题(不用到像3所说的那样就可以减少一些错误)。
还有是这样暂时不谈Smart pointer.
你们还有什么方法呢? 谢谢!