1

我正在编写简单的番茄钟应用程序,它基本上是倒数计时器。现在,我已经开始倒计时了,但奇怪的是,当我向我的类(任意)添加另一个属性时,我得到了 Sedmentation 错误错误。

使用gdb,问题应该出在这里:

void Status::showPomodoroTime() {
    QTime time = pomodoroTime->addSecs(elapsed);
    activeTime->display(time.toString("mm:ss"));
}

其中 activeTime 是 QLCDNumber 小部件,elapsed 是 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 中的段错误?

如果你想要更多代码,我可以把它放在任何地方。就是不知道,什么地方够坚持。不想在这里发布(大约 300 行代码)。

4

2 回答 2

1

检查 if(pomodoro!= NULL) 然后执行 addSecs()。

于 2012-09-24T08:43:35.913 回答
0

pomodoroTime 可能未初始化或已删除

于 2012-09-24T08:42:26.177 回答