【问题标题】:Chances of memory leak when valgrind says no memory leak当 valgrind 说没有内存泄漏时内存泄漏的可能性
【发布时间】:2011-09-26 18:52:29
【问题描述】:

我的C 代码在使用 valgrind 检查时没有显示任何内存泄漏。但是当我将该代码与另一个系统集成时,该系统有自己的内存管理但当然调用 malloc 来分配内存,显示内存泄漏。 Valgrind 检查过去每次都是正确的,但这次它对我不起作用。我想知道是否有内存泄漏的可能性,尽管valgrind 说没有内存泄漏。 valgrind 的最强参数可以设置为找到最难的内存泄漏?

【问题讨论】:

  • 这还不清楚。能不能说的更准确点。
  • @David,感谢您的回复。我使用其标准库在 C 中实现了一个数据结构。我使用 valgrind 检查了内存泄漏。valgrind 显示 没有内存泄漏。当我将相同的代码与另一个项目集成时,它显示内存泄漏。该项目有自己的内存管理模块,但它使用相同的 mallocfree 来分配内存并释放它。在集成到项目之前我总是这样做,并且在集成到在 valgrind 中测试并且没有内存泄漏的项目后从未出现内存泄漏。
  • contd .... 但是这一次,valgrind 没有显示任何内存泄漏,但是一旦我将相同的代码集成到项目中就会出现内存泄漏。
  • 听起来与其他项目的集成引入了内存泄漏。为什么你不信任 valgrind?
  • 我一直信任 valgrind,我只是想在极少数情况下 valgrind 也无法检测到内存泄漏。你能告诉我 valgrind 中是否有一些选项可以检测 最严重的内存泄漏

标签: c memory-leaks valgrind


【解决方案1】:

我认为你很有可能仍然存在内存泄漏 - 不是因为我认为 valgrind 有错误,而是因为我认为将它与另一个项目集成可能会以不同于你的测试的方式运行代码。 (仅供参考 - 我没有发现任何 valgrind 说我的代码很清晰的内存泄漏案例,尽管这并不是详尽的证据)。我认为为了解决这个问题,要么向你的非集成版本添加测试,要么在 valgrind 中运行集成版本。

其他选项可能会确保您没有抑制任何可能有害的错误,添加 --leak-check=full 或以其他方式使用您的 valgrind 设置。

【讨论】:

    猜你喜欢
    • 2013-06-24
    • 2015-08-10
    • 1970-01-01
    • 2020-03-31
    • 2016-03-15
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多