c++ - 当内部指针偏移量已知时,抑制 valgrind 中的 "possibly lost"错误

标签 c++ c valgrind

我有大量内部指针的代码,我想使用 valgrind 来检测内存泄漏。不幸的是,这意味着我在“可能丢失”类别中得到了很多垃圾。

我在部分代码中使用自定义内存分配器,它从 malloc 分配 block ,然后管理 block 本身。分配器使用正常的内部指针技巧 - 实际应用程序在 block 头之后接收指向 block 的内部指针。

因此,如果 block 在退出时由应用程序持有,则报告为“可能丢失”,因为应用程序持有指向该 block 的内部指针。但是,我知道头部大小,所以理论上我可以推导出开始指针。

有没有办法告诉 valgrind 忽略距起始指针已知偏移量处的内部指针,以便我可以检查应用程序中的泄漏?

最佳答案

您可以使用 valgrind 的抑制文件功能来实现您的目标。您可以指出不应报告最初由您的分配函数创建的“可能丢失”的内存块。

但是,如果 valgrind 找不到任何指针,它仍然会报告该 block “肯定丢失”。

有关如何创建抑制文件的更多信息,请参阅 valgrind 的文档。

关于c++ - 当内部指针偏移量已知时,抑制 valgrind 中的 "possibly lost"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27790021/

相关文章:

c++ - 当我们定义模板时总是定义 `value_type` 是一个好习惯吗

在Linux控制台中创建openGL上下文(Raspbian)

C printf %a 和 %La

c - 无法在 Ubuntu 上用 C 语言接受两个输入字符串

c - memcheck 错误是否可以接受?

c - 让: ** NO targets specififed and no makefile found.停止

c++ - 目前交易系统青睐哪些网格分布式计算框架

c++ - 为什么 raytracer 将球体渲染为椭圆?

C++ switch 语句的用法

valgrind - Massif 可以增量转储日志吗