C++ 这是Qt还是我的程序的错误?

C++ 这是Qt还是我的程序的错误?,c++,qt5,valgrind,C++,Qt5,Valgrind,我是瓦尔格林的新手。我在Ubuntu 15.10上使用Qt5.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==

我是瓦尔格林的新手。我在Ubuntu 15.10上使用Qt5.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
参数进行更改。您自己的程序代码中的函数可能位于堆栈的较低位置

尝试使用调试信息编译程序(
-g-O0
),然后再次运行
valgrind
。@Drop,我正在使用Qt Creator进行编译,并已设置为调试版本,-g是否延迟调试版本?您需要使用调试信息编译Qt本身。。。(
-debug
切换到configure)还要注意,调试构建(根据注释)也会增加调用堆栈要求,因为函数不会内联。