解决通过新声明分配的内存泄漏

有没有办法跟踪通过新语句分配的未释放的内存块?未发布的内存信息应列在应用程序出口,包含文件名和文件行。这样,应该可以快速识别导致内存泄漏的新语句。 如果我是正确的,MFC有DEBUG_NEW定义做那个工作。但是非MFC C ++应用程序呢? 使用的环境:Visual Studio 2010和Windows 7 64位。     
已邀请:
Visual Studio CRT有一些功能可以帮助您在调试版本中找到内存泄漏,请阅读http://msdn.microsoft.com/en-us/library/e5ewb1h3%28v=vs.80%29.aspx以获取更多信息;有很多东西需要考虑。 一般认为最佳做法是尝试始终使用
shared_ptr
类自动管理内存。如果您不使用
shared_ptr
,请考虑开始。     
有很多工具可以帮助您跟踪内存泄漏。所有这些都有其优点和缺点。 大多数工具的最大缺点是它们不会以自动方式向您显示泄漏。您明确必须在应用程序的生命周期内将内存状态转储到文件,然后稍后再次转储状态,然后比较这两种状态。这对开发人员来说很难。 Visual Leak Detector是更好的工具之一(在我看来)。它会自动记录应用程序末尾的所有泄漏,包括调用堆栈。请注意,Microsoft C运行时也可以记录泄漏,但没有调用堆栈。 我个人最喜欢的是简单地进行自己的内存管理。实现全局new并自己删除(注意:你需要实现一些变体),并在应用程序的末尾记录所有未释放的内存(使用最后被破坏的全局变量可能有帮助)。     

要回复问题请先登录注册