0

我正在使用 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 的错误还是我做错了什么?

4

1 回答 1

0

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

这就是处理第三方库的不幸现实,如果它困扰你,你应该为 Valgrind 制作一个--gen-suppressions=all.

请记住,“仍然可以访问”的内存只是“懒惰”,而不是真正的泄漏,因为您实际上从未丢失分配。泄漏应该被认为是一个真正的编程错误,而仍然可以访问,未释放的内存可能是也可能不是一个可以原谅的捷径。

于 2012-07-25T23:40:34.657 回答