基本的にカウントダウンタイマーである簡単なポモドーロアプリケーションを書いています。現在、カウントダウンが機能していますが、奇妙なことに、クラスに別の属性を追加すると (任意)、Sedmentation faultエラーが発生します。
gdb を使用すると、問題は次のようになります。
void Status::showPomodoroTime() {
QTime time = pomodoroTime->addSecs(elapsed);
activeTime->display(time.toString("mm:ss"));
}
ここで、activeTime は QLCDNumber ウィジェットで、経過時間は int です。
詳細なコンテキスト:
void Status::createDefaultIntervals()
{
pomodoroInterval = new QTime(0, 25);
pomodoroBreak = new QTime(0, 5);
pomodoroLongBreak = new QTime(0, 15);
}
void Status::run()
{
if (pomodoroActive == STOP) {
pomodoroTime = pomodoroInterval;
showPomodoroTime();
}
pomodoroActive = RUN;
updateStatusArea();
timerTick();
}
CreateDefaultInterval は、showPomodoroTime の前に確実に実行されます。
私を悩ませているのは、そのアプリケーション全体が正常に動作することです。別の属性を追加すると、sedfault がスローされ始めます。
*.h ファイルで変数を宣言すると、*.cpp で segfault が発生する可能性がありますか?
さらにコードが必要な場合は、どこにでも配置できます。私は知りません、どの場所が十分に永続的です。ここに投稿したくありません (約 300 行のコード)。