我遇到了一個非常奇怪的問題。它與此處描述的相似:http://www.qtforum.org/article/20389/problems-with-qlist.html。 當我在頭文件中聲明一個QList,並且試圖在源文件中使用它時,程序將因分段錯誤而失敗。頭文件中的QList聲明導致源文件中的段錯誤
這裏是一個片段:
threads.h文件:
class Corr2DThread
{
private:
QList<Sequence *> seqs_;
...
};
threads.cpp文件:
void Corr2DThread::addSequence(Sequence *seq)
{
QLOGX("Thread " << idx_ << " adding new sequence (" << seqs_.size() << "), name: '" << seq->name() << "'"); //this code fails due to call seqs_.size()
QLOGINC;
int activeCount = seq->activeItems();
Q_ASSERT(activeCount > 0);
QLOG("Contains " << activeCount << " active object images");
seqs_.append(seq);
QLOGDEC;
}
但是如果我聲明的QList本地,everythig是確定的,如如下面的代碼所示:
void Corr2DThread::addSequence(Sequence *seq)
{
QList<Sequence *> seqs_;
QLOGX("Thread " << idx_ << " adding new sequence (" << seqs_.size() << "), name: '" << seq->name() << "'");
QLOGINC;
int activeCount = seq->activeItems();
Q_ASSERT(activeCount > 0);
QLOG("Contains " << activeCount << " active object images");
seqs_.append(seq);
QLOGDEC;
}
我花了很多時間試圖讓這個工作,沒有運氣/知識。任何QT-guru都可以解釋這裏發生了什麼?
Qt不拋出C++異常,你可以對你得到的錯誤更具體一些嗎? –
分段錯誤 –
您是否嘗試將其運行到調試器中?什麼是回溯? –