2017-07-16 68 views
3

即使当我编译和运行这样的程序:Valgrind的泄漏检测不管什么

int main() { 
    return 0; 
} 

我得到以下Valgrind的错误,当我运行valgrind --leak-check=yes ./a.out

==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编译。如何解决这个问题,我一直处于完全丧失状态。

谢谢!

+0

您是否尝试过“== 26391 ==要查看它们,请重新运行:--leak-check = full --show-leak-kinds = all”? – JGroven

+0

在Linux上,我可能会丢失:0个字节的0个字节。 “仍然可达”似乎与某些Linux库有关。 –

+0

在你的发行版的bug跟踪器上为glibc报告。这绝对不是你的错。 –

回答

1

Valgrind的手册有以下约可能丢失

这意味着一个或多个指针的块的链已经发现 ,但指针中的至少一个是一个内部指针。这个 可能只是一个内存中的随机值,碰巧指向一个 块,所以你不应该认为这是好的,除非你知道你有内部指针。

这意味着所有报告的possibly lost发生都不泄漏。这需要通过代码检查确认泄漏。

对于您的特定情况,我们知道您的代码中没有泄漏发生。 您可能希望再次运行valgrind--leak-check=full --show-leak-kinds=all

+0

好的。我得到了这个: https://pastebin.com/PRyH6ftA – user2024014