1

Valgrind 报告我的程序正在对垃圾收集器释放的内存位置执行无效读取。

Valgrind 显示与该对一起被无效读取的内存的分配位置会很有帮助:

“大小为 2 的无效读取”

“地址 0x523befe 是一个大小为 12 的块中的 6 个字节”

但可惜没有显示内存分配位置。这是我的 Valgrind 命令行:

valgrind --tool=memcheck --leak-check=full --track-origins=yes --undef-value-errors=yes --read-var-info=yes --num-callers=50

我试过在 --tool=memcheck 和其他几个地方之后坚持 --track-origins=yes ,但无济于事。

知道如何在这种情况下获取内存创建位置吗?

编辑:

这是最终的 Valgrind 输出:

==14849==泄漏摘要:
==14849==肯定丢失:0个块中的0个字节
==14849==间接丢失:0个块中的0个字节
==14849==可能丢失:24个块中的900个字节
==14849 == 仍然可达:45,043 个块中的 631,292 个字节
==14849== 抑制:0 个块中的 0 个字节 == 14849
== 未显示可达块(找到指针的块)。
==14849== 要查看它们,请使用以下命令重新运行:--leak-check=full --show-reachable=yes
==14849==
==14849== 对于检测到和抑制的错误计数,请使用以下命令重新运行:-v
= =14849== 错误摘要:来自 14 个上下文的 14 个错误(抑制:0 来自 0)

4

0 回答 0