C - blkid_get_cache似乎会泄漏内存



我正在做一些linux编程,我遇到了一个情况,从blkid库的库函数泄漏一些内存…没有太多关于它的文档(https://www.kernel.org/pub/linux/utils/util-linux/v2.21/libblkid-docs/libblkid-Cache.html),所以我转向社区寻找一些解决这个问题的方法。

功能是blkid_get_cache和valgrind报告:

==29769== 4,129 (72 direct, 4,057 indirect) bytes in 1 blocks are definitely lost in loss record 68 of 69
==29769==    at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29769==    by 0x67360BB: blkid_get_cache (in /lib/x86_64-linux-gnu/libblkid.so.1.1.0)
==29769==    by 0x652DBAC: gather_disk_stat() (disk_status.cpp:96)
==29769==    by 0x652DD5A: execute (disk_status.cpp:124)
==29769==    by 0x42599B: PluginHelper::executeClientPlugin(plugin_descriptor*) (plugin_helper.cpp:333)
==29769==    by 0x432BB5: main (main.cpp:48)

现在,这段代码将在一个守护进程中使用,这个守护进程应该是24/7运行的,所以我想避免内存的不可控增长。

有人使用libblkid到现在吗?如何解决这个内存问题?(在一个极端的情况下,我可以只是free()它…但是这会影响系统的稳定性吗?)

您是否使用blkid_put_cache() ?

对于libblkid的README:

如果你已经调用了blkid_get_cache(),你应该调用Blkid_put_cache(),当您使用完blkid库函数时。这将保存缓存到blkid。选项卡文件,如果您已经写入对文件的访问。它还将释放所有相关设备和标签:

blkid_put_cache(缓存);

相关内容

  • 没有找到相关文章

最新更新