使用Valgrind调试Free After Free

xur*_*r17 3 c++ debugging valgrind

我正在尝试使用 Valgrind 调试我的代码中的免费错误后的使用。

我的代码在尝试访问以前删除的对象时崩溃。在这种情况下,有没有办法使用 Valgrind 查看谁删除了对象?

我使用以下选项运行 Valgrind,但它只捕获崩溃,并显示它发生的位置。我希望获得有关对象被释放位置的详细信息:

valgrind --tool=memcheck

Mar*_*nde 5

这是我在这些情况下使用的:

valgrind --track-origins=yes
Run Code Online (Sandbox Code Playgroud)

在释放后使用的情况下,它将向您显示释放内存/删除对象的函数的堆栈跟踪。

请阅读 Valgrind 的联机帮助页了解注意事项,特别是有关性能的注意事项。如果您的问题是并发问题,则较慢的 Valgrind 可能会更改程序的计时属性,并可能会更改(减少或增加)遇到错误的可能性。

valgrind --track-origins=yes
Run Code Online (Sandbox Code Playgroud)