Libgcrypt程序中的内存泄漏

时间:2012-07-25 23:08:46

标签: c memory-leaks valgrind libgcrypt

我正在使用Libgcrypt进行一些测试,当我使用valgrind检查内存使用情况时,退出时使用了3,200个字节。

我尝试过使用

valgrind --leak-check=full --track-origins=yes --show-reachable=yes ./my_program

但是valgrind valgrind只是在我的代码中抱怨这一行:

version = gcry_check_version("1.5.0");

和valgrind关于Libgcrypt的内部功能。

我的测试代码在这里:http://www.tiago.eti.br/storage/post2.c 我正在使用来自Debian sid存储库的Libgcrypt 1.5.0

这是Libgcrypt的错误还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

并非所有图书馆都非常谨慎地清理所有资源。只要一些“永久”分配只发生一次并且在程序结束之前一直使用(例如版本字符串),那么完全有可能该库永远不会为了解除分配而烦恼。

因此处理第三方库的不幸事实是,如果它困扰你,你应该用--gen-suppressions=all为Valgrind制作一个抑制文件。

请记住,“仍然可以访问”内存只是“懒惰”,而不是真正的泄漏,因为您实际上从未丢失分配。泄漏应被视为真正的编程错误,同时仍然可以访问,未解除分配的内存可能是也可能不是可原谅的快捷方式。