我在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]);
}
答案 0 :(得分:10)
数组似乎超出了堆栈大小(位是堆栈上的数组)。您可以尝试将其设置为全局或使用malloc分配数组。
答案 1 :(得分:5)
请注意,这是Valgrind擅长精确定位的事情。如果你在大量的代码中完成了这个,Valgrind会指出你错误的那一行。
为了在这个时代学习C,Valgrind是必不可少的。