这个错误是来自 Qt 还是我的程序?

Is this error from Qt or my program?

我是 valgrind 的新手。我在 Ubuntu 15.10 上使用 Qt 5.5.1 库用 C++ 编写了一个程序。我正在使用带有调试构建集的 Qt Creator。我通过以下命令使用 Valgrind 检查内存泄漏:

valgrind --leak-check=yes --track-origins=yes ./texteditor

Valgrind 然后给我以下信息:

==2977== Conditional jump or move depends on uninitialised value(s)
==2977==    at 0x97ED1EC: ??? (in /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.28)
==2977==    by 0x97EE58A: ??? (in /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.28)
==2977==    by 0x5B3380B: g_cclosure_marshal_VOID__VOID (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2)
==2977==    by 0x5B31B8A: g_closure_invoke (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2)
==2977==    by 0x5B43FFB: ??? (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2)
==2977==    by 0x5B4CC95: g_signal_emit_valist (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2)
==2977==    by 0x5B4CFC4: g_signal_emit (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2)
==2977==    by 0x96ECD00: gtk_adjustment_changed (in /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.28)
==2977==    by 0x5B35465: ??? (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2)
==2977==    by 0x5B384FC: g_object_thaw_notify (in /usr/lib/i386-linux-gnu/libgobject-2.0.so.0.4600.2)
==2977==    by 0x96ED182: gtk_adjustment_configure (in /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.28)
==2977==    by 0x4563C7F: ??? (in /home/tembo/Qt/5.5/gcc/lib/libQt5Widgets.so.5.5.1)
==2977==  Uninitialised value was created by a stack allocation
==2977==    at 0x456215F: ??? (in /home/tembo/Qt/5.5/gcc/lib/libQt5Widgets.so.5.5.1)

从上面的消息来看,根本没有指向 myProgram 的位置。这是来自 Qt 和其他库还是我错过了指向 myProgram 的内容?

默认情况下,Valgrind 仅显示调用堆栈的前 12 个条目,但这可以使用 --num-callers=xx 参数进行更改。您自己的程序代码中的函数可能在堆栈的更下方。