QApplication初始化的无条件跳转

时间:2017-03-26 15:33:27

标签: c++ linux qt

在Ubuntu 16.04 4.4.0-66-generic下使用Qt写一个简单的应用程序:

int main(int argc, char *argv[])
{
    QApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
    QApplication::setStyle(QStyleFactory::create("plastique"));

    QGCCore core(argc, argv);
    int val;
    val = core.exec();

    return val;
}

QGCCore只是继承了QApplication:

class QGCCore : public QApplication
{
    Q_OBJECT

public:
    QGCCore(int &argc, char* argv[]):QApplication(argc,argv){};
    ~QGCCore(){};
};

然而,Valgrind告诉我有一个错误:

==3494== Conditional jump or move depends on uninitialised value(s)
==3494==    at 0x12CB94BA: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.23)
==3494==    by 0x95215E6: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==3494==    by 0x953A087: g_signal_emit_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==3494==    by 0x953B211: g_signal_emit_by_name (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==3494==    by 0x9528B38: g_object_set_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==3494==    by 0x9529396: g_object_set (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==3494==    by 0x59987A5: ??? (in /home/shupeng/Qt5.6.1/5.6/gcc_64/lib/libQt5Widgets.so.5.6.1)
==3494==    by 0x5921D2C: QStyleFactory::create(QString const&) (in /home/shupeng/Qt5.6.1/5.6/gcc_64/lib/libQt5Widgets.so.5.6.1)
==3494==    by 0x58B7363: QApplication::style() (in /home/shupeng/Qt5.6.1/5.6/gcc_64/lib/libQt5Widgets.so.5.6.1)
==3494==    by 0x58B75C4: QApplicationPrivate::initialize() (in /home/shupeng/Qt5.6.1/5.6/gcc_64/lib/libQt5Widgets.so.5.6.1)
==3494==    by 0x58B7613: QApplicationPrivate::init() (in /home/shupeng/Qt5.6.1/5.6/gcc_64/lib/libQt5Widgets.so.5.6.1)
==3494==    by 0x4240EE: QGCCore::QGCCore(int&, char**) (QGCCore.cc:51)
==3494==    by 0x422D35: main (main.cc:89)
==3494==  Uninitialised value was created by a stack allocation
==3494==    at 0x9523140: g_cclosure_marshal_VOID__VOIDv (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==3494== 
==3494== (action on error) vgdb me ... 

这是什么问题,我做错了什么?

0 个答案:

没有答案