关于Qt信号发射的Segfault

时间:2013-04-01 15:18:37

标签: c++ qt segmentation-fault signals

我有以下功能,在发射时会出现段错误。仅了解以下内容,可能导致此段错误的条件是什么?

功能

MyClass::EmitSignal() {
    QString param = SomeObject->GetHelloWorld();
    qDebug () << "param: " << param;
    emit SomeSignal (param);
    qDebug () << "Emitted SomeSignal";
}

信号原型

signals:
    void SomeSignal (const QString& someString);

输出

param: HelloWorld
Segmentation fault (core dumped)

3 个答案:

答案 0 :(得分:2)

它是否与您发出对堆栈上的QString的引用这一事实有关?如果信号/插槽连接排队,则param将被破坏,然后连接的插槽才能读取它。

答案 1 :(得分:1)

我这个愚蠢的错误 - 周末有人连接到我的信号,而当我更改QString的格式时,他们的代码会出现段错误。我应该检查一下新的插槽。

答案 2 :(得分:-1)

如果SomeObject等于null或无效,则肯定会出现段错误