使用Libgcrypt的程序中的内存泄漏

使用Libgcrypt的程序中的内存泄漏,c,memory-leaks,valgrind,libgcrypt,C,Memory Leaks,Valgrind,Libgcrypt,我正在用Libgcrypt做一些测试,当我使用valgrind检查内存使用情况时,出口处有3200字节在使用 我试着用 valgrind --leak-check=full --track-origins=yes --show-reachable=yes ./my_program 但是valgrind valgrind只抱怨我代码中的这一行: version = gcry_check_version("1.5.0"); 和valgrind关于Libgcrypt的内部函数 我的测试代码如下:

我正在用Libgcrypt做一些测试,当我使用valgrind检查内存使用情况时,出口处有3200字节在使用

我试着用

valgrind --leak-check=full --track-origins=yes --show-reachable=yes ./my_program
但是valgrind valgrind只抱怨我代码中的这一行:

version = gcry_check_version("1.5.0");
和valgrind关于Libgcrypt的内部函数

我的测试代码如下: 我正在使用Debian sid存储库中的Libgcrypt 1.5.0


这是Libgcrypt的一个bug,还是我做错了什么?

并非所有的库都会非常小心地清理它们的所有资源。只要一些“永久性”分配只发生一次,并且一直使用到程序结束(例如,对于版本字符串),库就完全有可能从不费心取消分配

因此,与第三方库打交道是一个不幸的现实,如果它困扰您,您应该使用
--gen suppressions=all
为Valgrind创建一个抑制文件

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