【问题标题】:Memory leak in a program with Libgcrypt使用 Libgcrypt 的程序中的内存泄漏
【发布时间】:2012-07-25 23:08:45
【问题描述】:

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

【问题讨论】:

    标签: c memory-leaks valgrind libgcrypt


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-11
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 2012-06-24
      • 2013-03-26
      相关资源
      最近更新 更多