以前搞开发时,曾经写过类似的文章,不过带不出来,最近VS推出了新版VS2010,而BoundsChecker也推出了适用于vc6, vs2005,vs2008,vs2010的新版本,于是下载下来试了一下,和VC6下有一些不同.
安装好BoundsChecker后,在VS工具栏有一个工具条
,由于BoundsChecker使用插桩的方式,来查找内存泄露,所以需要在编译的时候,来执行插桩操作,有一个开关,决定编译时是否使用BoundsChecker来插桩就是第五个,蓝色的图标,点中后,后面的编译条状态为有效,初始值Error detection,表示查错,点击第一个红色的图标旁边的小箭头,弹出下拉菜单,选择Start with Error Detection,开始插桩方式编译并调试运行。过程中如果弹出有的窗口,需要你提供系统源文件如afxwin2.inl,thrdcore.cpp
选择“取消“,因为我们不需要查找系统文件中的错。随后会出现错误的源码位置,弹出一个标题上写了Program Error Detected的错误框
如果暂时不改,点击右下解的Continue继续.
最后等到程序退出时,出现一个结果报告:
双击最顶上的Memory Leaks Detected,可以看到有哪些地文件出现了内存泄露.在红色的错误上面右键->Edit Source就可以修改了。
BoundsChecker适用于中小型代码量的项目.代码太多了,会很慢.比如在腾讯RTX的项目上使用(60~80万行代码),就基本用不了,太慢了.