是否有办法跟踪通过新语句分配的未释放内存块?未释放的内存信息应该列在应用程序出口上,其中包含文件名和fileline。这样,就可以快速识别导致内存泄漏的新语句。
如果我是正确的,MFC让DEBUG_NEW定义做这个工作。但是非MFC C++应用程序呢?
使用的环境: Visual 2010和Windows 7 64位。
发布于 2011-03-03 19:57:40
Visual具有一些功能,可以帮助您在调试生成中查找内存泄漏,阅读http://msdn.microsoft.com/en-us/library/e5ewb1h3%28v=vs.80%29.aspx获取更多信息;还有很多需要考虑的地方。
通常还认为,尝试总是、使用shared_ptr类来自动管理内存的最佳实践。如果您没有使用shared_ptr,请考虑启动。
发布于 2011-03-03 19:58:58
有许多工具可以帮助您跟踪内存泄漏。它们都有其优点和缺点。
大多数工具的最大缺点是它们没有自动显示泄漏信息。在应用程序的生存期内,您必须显式地将内存状态转储到文件中,然后稍后再转储状态,然后比较这两种状态。这不太适合开发人员。
视觉检漏仪是一个更好的工具(在我看来)。它会自动记录应用程序末尾的所有泄漏,包括调用堆栈。请注意,Microsoft运行时也可以记录泄漏,但在没有调用堆栈的情况下会这样做。
我个人最喜欢的就是简单地做你自己的内存管理。实现全局新的并自己删除(注意:您需要实现一些变体),并在应用程序的末尾记录所有未释放的内存(使用最后销毁的全局变量在这里可能有帮助)。
https://stackoverflow.com/questions/5185747
复制相似问题