我正在使用Libgcrypt做一些测试,当我使用valgrind检查内存使用情况时,在退出时有3200个字节在使用。
我试着用
valgrind --leak-check=full --track-origins=yes --show-reachable=yes ./my_program但是valgrind valgrind只抱怨我的代码中的这一行:
version = gcry_check_version("1.5.0");以及关于Libgcrypt内部函数的valgrind。
我的测试代码在这里:http://www.tiago.eti.br/storage/post2.c和我使用的是来自Debian sid仓库的Libgcrypt1.5.0
这是Libgcrypt的bug,还是我做错了什么?
发布于 2012-07-26 07:40:35
并不是所有的库都非常小心地清理所有的资源。只要一些“永久”分配只发生一次,并且一直使用到程序结束(例如,对于一个版本字符串),那么完全有可能库根本不会去释放它。
因此,处理第三方库是一个不幸的现实,如果它困扰您,您应该使用--gen-suppressions=all为Valgrind创建一个抑制文件。
请记住,“仍然可访问”的内存只是“懒惰”,而不是真正的泄漏,因为您实际上从未丢失过分配。泄漏应该被认为是真正的编程错误,虽然仍然可以访问,但未释放的内存可能是也可能不是一个可原谅的快捷方式。
https://stackoverflow.com/questions/11660001
复制相似问题