![]() |
1
3
我没有跟踪-未初始化的内存设置为
msvc的调试生成使用的值是专门为帮助导致容易检测到的故障而设计的:
而且,它们在调试器的数据显示中很容易识别。零并没有那么突出。 综上所述,msvc提供了许多调试钩子/api,您可以使用这些钩子/api按照您想要的方式执行一些操作: 针对您更新的问题提供了一些附加信息: 您可以使用第三方调试分配库,如dmalloc( http://dmalloc.com/ )但我真的不知道这些库集成到msvc项目中有多容易,尤其是“现实世界”的项目。
另外,请注意,这些显然只处理动态分配(并且可能无法很好地与msvc的默认值集成
你
可以
使用全局覆盖
另外,您可能需要考虑迁移到visual studio 2010—当您使用未初始化的本地变量时,它将进入调试器—除了在调试器下运行调试生成之外,不做任何特殊的事情。当然,mscv已经警告过许多这种情况一段时间了,但是vs2010将在调试器中捕获以下内容,调试器不会产生警告(至少在我当前的编译器设置中是这样的):
即使是VC++2010的快速版本也支持这一点。 |
![]() |
2
1
只是一个建议:你能在编译器中使用静态代码分析工具吗?/analyze将给您一个c6001警告,说明您正在使用未初始化的内存。它有点系统性,这是你的要求。 |
![]() |
3
1
进入crt显示幻数在heap alloc dbg和realloc帮助中使用,值本身被编码为
知道要搜索什么 often helps . 链接的线程确实有一个很好的建议:在bcleanfillation上设置一个监视并从调试器中修改它。 它确实有效,但我会让这个问题保持一段时间-我仍然希望有人有更好的主意…我希望使用受控初始化运行自动测试,而不必手动执行(并且只使用可用的调试器)。 |