初始化类成员应用程序与SIGSEGV崩溃后

时间:2016-10-05 14:35:13

标签: c++ qt segmentation-fault sigsegv

我有应用程序类的Qt应用程序:

class Application : public QApplication {
public:
    Application(int argc, char** argv);
    ~Application();
};

一切正常,直到我添加

private:
    const QString NAME = "QtImageViewer";

当我尝试运行它时,该应用程序崩溃了10次


主要看起来像

int main(int argc, char** argv)
{
    Application app(argc, argv);
    app.setApplicationName("QtImageViewer");

    MainWindow mainWindow;
    mainWindow.show();

    return (app.exec());
}


我想知道错误是什么,因为我不知道。

编辑: GDB backtrace Valgrind

2 个答案:

答案 0 :(得分:2)

修正了它,与here相同的问题。

我的Application类构造函数签名是Application(int argc, char** argv);,但QApplication有QApplication(int &argc, char **argv)

Application(int argc, char** argv);更改为Application(int& argc, char** argv);,一切正常。

感谢所有人的帮助。

答案 1 :(得分:0)

我发表评论,但在撰写本文时我没有足够的声誉。为了记录,我克隆了您链接到的存储库。我注意到你似乎没有使用Qt Creator但可能只是使用cmake。我的Qt 5安装不在你的位置,所以我把所有内容都扔进Qt Creator并从那里构建并运行项目。

程序运行和关闭都很好,即使你建议的改变为你打破。 (在Qt 5.5,g ++ 5.4.0的Ubuntu 16上构建和运行。)

此外,我可能误解了Igor的评论,但由于Application是在堆栈上进行的,因此~Application()没有引入额外的堆释放。