我正在使用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的错误还是我做错了什么?
答案 0 :(得分:0)
并非所有图书馆都非常谨慎地清理所有资源。只要一些“永久”分配只发生一次并且在程序结束之前一直使用(例如版本字符串),那么完全有可能该库永远不会为了解除分配而烦恼。
因此处理第三方库的不幸事实是,如果它困扰你,你应该用--gen-suppressions=all
为Valgrind制作一个抑制文件。
请记住,“仍然可以访问”内存只是“懒惰”,而不是真正的泄漏,因为您实际上从未丢失分配。泄漏应被视为真正的编程错误,同时仍然可以访问,未解除分配的内存可能是也可能不是可原谅的快捷方式。