gpt4 book ai didi

c++ - 返回值时程序崩溃的可能原因有哪些?

转载 作者:行者123 更新时间:2023-12-01 19:17:41 26 4
gpt4 key购买 nike

我有一堆大致相当于这个的代码:

bool test(double e, short a, short b, short c) {
// Things being calculated here...
cout << "debug_3" << endl;
return (1 - abs(cos_th)) < (1 - cos(e));

}

int main() {

// something...

cout << "debug_0" << endl;
if(test(e,1,2,0)) {
cout << "debug_4" << endl;
// Bunch of useful operations...
}

// something...

}

运行代码会生成输出:

debug_3

之后程序崩溃(在 Windows 中显示“程序已停止工作...”)。我从未遇到过值(value)返回时崩溃的情况,我不知道是什么原因导致它或如何修复它。对这个问题有什么想法吗?

编辑:更多信息:

在我的构建中,我还验证了 cos_the 的值是否有效。

人们似乎指出第二个问题是问题的根源,但当我通过调用 test() 摆脱 if 语句时,我的问题似乎得到了解决(即没有崩溃)。 ..

最佳答案

在不知道system是什么的情况下,我们唯一可以修复的事情就是更改a bc<的类型unsigned short 因为它们只是数组索引,并确保它们在数组范围内。您可能还需要确保该值不为零,因为您除以结果:

sqrt((Xca*Xca+Yca*Yca+Zca*Zca)*(Xba*Xba+Yba*Yba+Zba*Zba))

使用 cerr 而不是 cout 来确保刷新输出,但您仍然看不到 debug 4

将更多输出放入 else 条件内或 if 之后:也许该函数返回 false?

如果无法准确定位错误,请使用调试器。

关于c++ - 返回值时程序崩溃的可能原因有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15509080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com