程序崩溃,没有错误信息

Program crashes without error message

本文关键字:有错误 信息 崩溃 程序      更新时间:2023-10-16

我正在使用Qt Creator (Community)学习如何编码。
我有一个任务来计算函数的根,我尝试使用我在Qt Widgets项目中找到的代码。当我尝试运行程序时,Qt没有检测到任何错误。
然而,当我试图使用on_pushButton_clicked()显示结果时,我的程序崩溃了。
我的讲师怀疑应该有一个开环,但我没有看到任何。
任何帮助都将非常感激。
下列代码:

double function1(double q)
{
double ab = ((q*q*q)+(9*q*q)-(15*q)+98)*(sin(q));
return ab;
}
void MainWindow::on_pushButton_clicked()
{
    ui->label->setText(tr("%1").arg(func1()));
}
double MainWindow::func1()
{    
    std::setprecision(4);
    double precision = 0.001;
    double a = -10;
    double b = -9;
    double product = function1(a)*function1(b);
    double absolute = fabs(a-b);
    double e = 0;
    if (product>0)
    {
        ++a;
        ++b;
    }
    else
    {
        while (absolute >= precision)
        {
            e = (a + b) / 2;
            double fa = function1(a);
            double fe = function1(e);
            if (fe == 0)
            {
                return e;
                break;
            }
            if (fa*fe>0)
            {
                a = e;
            }
            else if (fa*fe<0)
            {
                b = e;
            }
        }
    }
    return e;
}

尝试在每次循环发生时打印出绝对值精度的值:

while (absolute>= precision)

。这应该能帮你弄明白。

如果当你点击"调用" on_pushButton_clicked的按钮时程序崩溃,那么这个槽里面就有问题。

首先,所有的堆内存对象都是用一个新的语句(特别是标签)创建的吗?

PS:你可以删除break指令,函数已经退出while循环,因为返回在前一行。