在 C 编程中,如果出现堆栈溢出,为什么我们要告诉它突然终止循环。 Shack-overflow 并不是无限循环的原因。但是导致突然终止,虽然我们看不到它在哪里终止。 正确的?? 对于这个程序来说,它会导致堆栈溢出,但不会导致无限循环
int foo(int val) {
int x=0;
while(val > 0) {
x = x + foo(val--);
}
return val;
}
但是为什么我们不能说它是无限循环?为什么它说是突然终止?
最佳答案
由于这是递归,因此每次调用函数 foo() 都会增加堆栈。正如我们所知,循环永远不会结束,因此在某些时候堆栈会增加太多,以至于操作系统将终止代码并给出堆栈溢出错误。
关于C编程: Stackoverflow is a cause of abrupt termination,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57556904/