valgrind 在日志文件中多次显示相同的内存泄漏

valgrind showing same memory leak multiple times in log file

我在一家跨国软件公司工作。我的任务是修复软件中的内存泄漏。我正在使用 valgrind memcheck 工具。我用了'valgrind --leak-check=yes --log-file=vg.log '。我发现 valgrind 在 vg.log 中以不同的大小多次显示相同的内存泄漏,并且 vg.log 文件有 200 万行。因此,我无法确定哪个泄漏量最大。我的意思是哪一个是最大的漏洞。你有解决这个问题的想法吗?我希望相同的内存泄漏应该在 vg.log 中出现一次,聚合 size.I 我正在使用 val3.12.0 版本的 valgrind。我正在使用 Red Hat Enterprise Linux 工作站版本 6.5。

泄漏按大小增加的顺序转储。因此,最后一次泄漏是最大的一次。每个泄漏描述看起来像

XX bytes in B blocks are definitely lost in loss record R of N

哪里

  • XX 是该调用堆栈的泄漏总大小
  • B 是该调用堆栈发生泄漏的次数。例如,如果 4 个块中的总数为 4096 字节,这意味着调用发生了 4 次,每次泄漏为 1024 字节
  • R 是泄漏的 运行 计数
  • N 是不同泄漏调用栈的总数

实际上 valgrind 有一个 --num-callers 选项,可以用来合并不同的类似内存泄漏。