C编程: Stackoverflow is a cause of abrupt termination

标签 c

在 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/

相关文章:

c - 了解 sprintf 如何将整数转换为字符串

c - 处理数组中的 free 的简单方法

c - 将大量但已知数量的参数传递给 C 函数

c - 这个无括号/无括号代码如何有效?

检查较小的立方体是否填充较大的立方体

C++ concat const char 与 char

c - 链接列表仅打印第一个列表的第一个值

c - 这个 clang 优化是一个错误吗?

c++ - gcc 链接的默认库?

c - linux上PPC64下一个进程可以有多少内存