我有以下功能,在发射时会出现段错误。仅了解以下内容,可能导致此段错误的条件是什么?
功能
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)
答案 0 :(得分:2)
它是否与您发出对堆栈上的QString
的引用这一事实有关?如果信号/插槽连接排队,则param
将被破坏,然后连接的插槽才能读取它。
答案 1 :(得分:1)
我这个愚蠢的错误 - 周末有人连接到我的信号,而当我更改QString的格式时,他们的代码会出现段错误。我应该检查一下新的插槽。
答案 2 :(得分:-1)
如果SomeObject等于null或无效,则肯定会出现段错误