1

基本的にカウントダウンタイマーである簡単なポモドーロアプリケーションを書いています。現在、カウントダウンが機能していますが、奇妙なことに、クラスに別の属性を追加すると (任意)、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 行のコード)。

4

2 に答える 2

1

if(pomodoro!= NULL) を確認してから、addSecs() を実行します。

于 2012-09-24T08:43:35.913 に答える
0

pomodoroTime が初期化されていないか、削除されている可能性があります

于 2012-09-24T08:42:26.177 に答える