【问题标题】:How can I disable memory leak logging in Visual Studio 2005?如何在 Visual Studio 2005 中禁用内存泄漏日志记录?
【发布时间】:2011-04-27 05:13:05
【问题描述】:

我想知道是否有一种方法可以禁用 Visual Studio(2005,如果重要)在结束进程时执行的内置内存泄漏日志记录。

当我调试一大段代码时,我可能只想在调查泄漏之前测试特定功能。我的问题是,当我终止进程时,泄漏日志记录需要很长时间。有时我可以等待超过一分钟,让所有的倾倒都发生。

非常感谢

【问题讨论】:

  • 可能你的程序包含对_CrtDumpMemoryLeaks的调用,如果是,请评论它。

标签: visual-studio memory-leaks


【解决方案1】:

当您的程序在调试模式下编译时,会调用函数CrtDumpMemoryLeaks。您可以通过调用函数来关闭此行为

_CrtSetDbgFlag(0);

其用法描述为here。但是修复这些内存泄漏仍然是明智的。通常它一些大的静态对象持有所有的内存。您可以从 cpp 文件中声明的静态对象重构它们,方法是使用将它们封闭在一个类中,该类在 getter 函数中首次访问时创建对象。现在,您可以在程序退出时安全地删除您的静态数据,作为您 main 方法中的最后一次调用。这确实可以解决内存泄漏问题,并且您的报告会更短。

你的, 阿洛伊斯克劳斯

【讨论】:

  • 确实,我总是修复我的内存泄漏,只是我喜欢在这样做的时候选择。可悲的是,在我的工作环境中,事情很少像在 main 方法结束时删除静态变量那样简单。我们有 500 多个模块一起交互,大多数时候,一个特定的模块 (DLL) 会造成所有麻烦。我通常使用第三方软件来调试泄漏,因为它们的输出通常比 Visual Studio 的输出更有用(至少对我而言)。非常感谢您的回答。
猜你喜欢
  • 2020-11-12
  • 2017-01-14
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多