[英]QList declaration in header file causes a segmentation fault in the source file
我遇到了一個很奇怪的問題。 它類似於此處描述的內容: http : //www.qtforum.org/article/20389/problems-with-qlist.html 。 當我在頭文件中聲明QList並嘗試在源文件中使用它時,該程序失敗並出現分段錯誤。
這是一個片段:
thread.h文件:
class Corr2DThread
{
private:
QList<Sequence *> seqs_;
...
};
thread.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,那么一切都可以,如下面的代碼所示:
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專家都可以解釋這里發生了什么?
檢查您是否忘記了實際創建類實例。 接下來,我建議您使用GDB。 1)gdb 2)設置跟隨叉模式的孩子3)運行4)您顯然會遇到分段錯誤-輸入“ bt”以查看回溯。 5)我高度假定您只對Corr2DThread指針進行操作,而沒有將其初始化為構造的Corr2DThread。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.