无论如何都会检测到Valgrind泄漏

3
即使我编译和运行这样的程序:
int main() {
    return 0;
}

当我运行valgrind --leak-check=yes ./a.out时,我会得到以下的valgrind错误。
==26391== LEAK SUMMARY:
==26391==    definitely lost: 0 bytes in 0 blocks
==26391==    indirectly lost: 0 bytes in 0 blocks
==26391==      possibly lost: 72 bytes in 3 blocks
==26391==    still reachable: 200 bytes in 6 blocks
==26391==         suppressed: 18,528 bytes in 153 blocks
==26391== Reachable blocks (those to which a pointer was found) are not shown.
==26391== To see them, rerun with: --leak-check=full --show-leak-kinds=all

我正在使用clang++ test.cpp进行编译。我完全不知道该如何解决这个问题。 谢谢!

你尝试过"==26391== To see them, rerun with: --leak-check=full --show-leak-kinds=all"吗? - JGroven
在Linux上,我可能丢失了:0 字节的 0 块。 "仍然可达" 似乎与一些Linux库有关。 - Martin Sand
请在您的发行版 glibc 的 bug 追踪器上报告此问题。这绝对不是您的错。 - Henri Menke
1个回答

1

Valgrind手册中关于"可能丢失"的说明如下:

这意味着已经找到了一个或多个指向该块的指针链,但至少有一个指针是内部指针。这可能只是内存中随机的值,恰好指向一个块,因此,除非您知道内部指针,否则不应将其视为正常情况。

这意味着所有报告的"可能丢失"情况都不是泄漏。需要通过代码审查来检查泄漏。

对于您的特定情况,我们知道您的代码中没有发生泄漏。您可以使用--leak-check=full --show-leak-kinds=all重新运行valgrind


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接