分段故障(核心转储)

时间:2012-02-14 04:43:04

标签: c segmentation-fault printf coredump

我在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]);
}

2 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:5)

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

为了在这个时代学习C,Valgrind是必不可少的。