QTime-> addSecs导致分段错误

时间:2012-09-24 08:39:32

标签: c++ qt

我正在编写简单的 pomodoro 应用程序,它基本上是倒数计时器。现在,我有倒计时工作,但奇怪的是,当我向我的类添加另一个属性(任意)时,我得到 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中的段错误?

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

pomodoroTime可能未初始化或已删除