Valgrind在使用线程时抱怨

时间:2011-03-17 11:11:11

标签: c multithreading valgrind

我创建了20个线程来读/写共享文件。我有同步线程。 现在我的程序工作正常,但是当我用valgrind运行它时,它给了我这样的错误:

LEAK SUMMARY:

   **definitely lost: 0 bytes in 0 blocks.
\
     **possibly lost: 624 bytes in 5 blocks.**

   **still reachable: 1,424 bytes in 5 blocks.****


    suppressed: 0 bytes in 0 blocks.

Reachable blocks (those to which a pointer was found) are not shown.

此外,当我按Ctrl + c时,它会给出相同的错误。

我甚至没有采取任何措施,但仍然是valgrind抱怨。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以运行valgrind --leak-check = full ./prog_name以确保这些可访问的块不是您可以在程序中销毁的。很多时候初始化libcurl这样的库而不关闭或破坏它会导致泄漏。如果它不是你可以控制的东西,你可以写一个抑制文件。 http://valgrind.org/docs/manual/mc-manual.html第4.4节有一些信息和一些示例的链接

答案 1 :(得分:1)

Sill可访问的块可能是由于您的标准库没有释放池中用于标准容器(see this faq)的内存:这将是程序退出的性能优化,因为内存将立即返回到无论如何操作系统。

“可能丢失”的块可能是由同样的事情造成的。

Valgrind Manual page for memcheck对检测到的不同种类的泄漏有很好的解释。