Memory 使用boundsChecker检测内存泄漏

Memory 使用boundsChecker检测内存泄漏,memory,detection,using,bounds-checker,Memory,Detection,Using,Bounds Checker,我正在用boundsChecker检测我的源代码以进行内存检测,但当我用 原生c/c++工具管理器的错误检测工具类型,我得到 生成错误。当我看到输出窗口时,它显示在检测此错误期间使用的NM2002:Inline expansion(/Ob) 但当我选择instrumentation类型作为性能或覆盖率分析时,源代码正在成功构建,但当我运行测试用例检查内存泄漏时,它没有显示任何内存泄漏。。 有人能帮我吗。。。 另外,请建议我使用哪种类型的仪器来检测内存泄漏。关于检测内存泄漏,您需要激活“内存跟踪”

我正在用boundsChecker检测我的源代码以进行内存检测,但当我用 原生c/c++工具管理器的错误检测工具类型,我得到 生成错误。当我看到输出窗口时,它显示在检测此错误期间使用的NM2002:Inline expansion(/Ob)

但当我选择instrumentation类型作为性能或覆盖率分析时,源代码正在成功构建,但当我运行测试用例检查内存泄漏时,它没有显示任何内存泄漏。。 有人能帮我吗。。。
另外,请建议我使用哪种类型的仪器来检测内存泄漏。

关于检测内存泄漏,您需要激活“内存跟踪”子系统。默认情况下,它处于激活状态。但是,它不跟踪托管C/C++分配的内存,只跟踪非托管C/C++分配的内存


你介意分享一下你的测试用例吗?我是维护该产品的开发人员之一,如果有必要,我们可以安排NDA协议。

/Obn内联确实会在编译过程之间插入插入的代码时导致插入的代码错误。代码被赋予了第一次编译,一些代码可能被标记为可能的内联。然后,我们将所有工具添加到中间语言中。编译的最后一个过程就完成了,如果他们试图用插装来内联代码,那么可能会发生不好的事情。这就是为什么我们尽可能禁用内联,并在需要时生成错误

您使用的是哪个VS版本? Devpartner的哪个版本

您需要使用错误检测进行编译以捕获内存泄漏。我建议在关闭内联的情况下进行调试编译

编辑我刚刚用VS2008和VS2010以及当前的11.1候选版本运行了一些测试

我没有出错,而是

1> 检测正在添加(/Ob0)以关闭内联 1> cl:命令行警告D9025:用'/Ob0'重写'/Ob1'

警告1警告D9025:用“/Ob0”重写“/Ob1”,e:\cust\Anthony\Test\Test\cl-Test 警告2警告D9025:用“/Ob0”e:\cust\Anthony\Test\Test\cl Test覆盖“/Ob1”

这些消息表明我们正在禁用内联。只有在启用了将警告视为错误时,才会将其视为错误