首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Valgrind未检测到HDF5泄漏的资源

Valgrind未检测到HDF5泄漏的资源
EN

Stack Overflow用户
提问于 2018-07-31 00:40:44
回答 1查看 91关注 0票数 1

我注意到,Valgrind没有检测到使用HDF5的C创建的资源,这些资源在程序结束之前没有关闭,尽管我使用--leak check=full选项启动了它。这正常吗?

在发布代码之前,我经常依赖于Valgrind,但今天当我检查代码时,我感到惊讶和沮丧,因为它没有检测到它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-01 05:37:16

valgrind memcheck工具检测由‘标准’分配器分配/释放的内存,比如malloc/free/new/delete/...

如果HDF5的C没有(在内部)使用上面的标准分配器,那么valgrind就不可能自己猜测要监视什么。

如果HDF5实现了自己的堆管理( mmap上的e.g.based,并将这些块分成较小的已分配块),那么valgrind就会提供“客户端请求”,从而允许valgrind对此类非标准分配器提供一些valgrind支持。但这一切都意味着在HDF5源代码中做了一些工作。

有关如何描述此类非标准分配器的更多信息,请参见例如http://www.valgrind.org/docs/manual/mc-manual.html#mc-manual.mempools

一些正在实现自己的非标准分配器的库/工具有时会有一种方法(例如环境变量)来指示绕过这些非标准分配器,并且仍然使用malloc/free/...同样,由HDF5来提供这一点。

如果现在HDF5真的使用标准的分配器,并且valgrind无法跟踪它所做的事情,那么就在valgrind bugzilla上提交一个bug。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51598654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档