分段故障(核心转储)

Per*_*rcy 8 c printf coredump segmentation-fault

我是相对较新的C,我试图运行一个简单的程序,我得到这个错误消息:分段错误(核心转储)我只想打印数组位的任何值,但我不能,我会感激任何帮助关于这个错误.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <malloc.h>

int main()
{
    const long int N = 1000000000;
    const int smallN = 125000000;
    char bits[smallN];

    for(int i=0; i<smallN; i++){
        bits[i]=0xff;
    }

    printf("character = %c \n", bits[5]);
}
Run Code Online (Sandbox Code Playgroud)

Jes*_*mos 10

该数组似乎超出了堆栈大小(位是堆栈上的数组).您可以尝试将其设置为全局或使用malloc分配数组.


Mic*_*lon 5

请注意,这是Valgrind擅长精确定位的事情.如果你在一大堆代码中完成了这个,Valgrind会指出你错误的那一行.

对于在这个时代学习C语言,Valgrind是不可或缺的.