c - 运行一段时间后出现段错误(核心已转储)

标签 c function gcc

我正在尝试将输出打印为

 func 1 ---------------1
func 2  -------2
 func 1 ---------------1
func 2  -------2

不确定。

但是在程序执行一段时间后我得到segmentation fault core(dumped)

为什么我的 gcc 编译器显示这个错误?

#include<stdio.h>
int i=2;
int main(int argc, char *argv[]){
    func1();
    func2();
    return 0;
}

void func1(){
    printf("\n func 1 ---------------%d",i);
    i=2;
    func2();
}

void func2(){
    printf("\nfunc 2  -------%d",i);
    i=1;
    func1();
}

最佳答案

编译器不会抛出段错误,您的程序会。

你的程序调用 func1()func2() 无数次,导致它爆炸,因为堆栈大小将被超过(因此段错误将会发生)。

关于c - 运行一段时间后出现段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46319326/

相关文章:

android - crtbegin.o 和 crtbegin_dynamic.o 是什么?

使用c中的mktime在Windows上创建1970年之前的unix时间戳

c - 链接到外部 C 库的 R 包

javascript - 如何在另一个函数中使用 map 函数和箭头函数?

javascript - 为什么 HTML 不允许我以与 JSX 相同的方式添加事件处理程序?

c - 这段代码是怎么回事?

枚举中的Java变量返回函数类型

c++ - 为什么我不能运行目标文件?

c - gcc编译的带 "-static"的可执行文件包含哪些函数?哪些功能不是?

c++ - "no ' operator++(int) ' declared for postfix '++ ' [-fpermissive]"枚举