分割错误(核心转储)
问题描述:
我在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]);
}
答
该数组似乎超过堆栈大小(位是堆栈中的数组)。您可以尝试将其设为全局或使用malloc分配数组。
答
请注意,这是Valgrind擅长为您准确定位的事情。如果你在一大块代码中完成了这个工作,Valgrind会指出你错误的那一行。
对于在这个时代学习C,Valgrind是必不可少的。
+3
不是一个真正的答案,更多的是评论 – David 2013-02-22 03:46:13
这工作谢谢! – Percy 2012-02-14 05:16:02