2012-07-25 51 views
0

我正在做一些Libgcrypt测试,当我使用valgrind检查内存使用情况时,在出口处有3,200字节正在使用。Libgcrypt程序中的内存泄漏

我曾尝试使用

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 ,我使用Libgcrypt 1.5.0从Debian的SID库

据Libgcrypt的错误,还是一个我我做错了什么?

回答

0

并非所有图书馆都非常小心地清理所有资源。只要某些“永久性”分配只发生一次,并且在程序结束时才使用(例如对于版本字符串),那么库完全有可能永远不会解除分配。

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

记住,“仍可达”的记忆就是“懒惰”,而不是一个真正的泄漏,因为你从来没有真正失去分配。泄漏应该被认为是一个真正的编程错误,而仍然可以访问,未取消分配的内存可能是也可能不是可以原谅的快捷方式。

+0

非常感谢你! – 2012-07-27 17:46:10