分段错误(核心已转储)

8

我在C语言方面比较新,试图运行一个简单的程序时,却收到了如下错误信息:段错误(core dumped)。我只是想打印数组bits中的任何值,但我无法做到,如果有人能帮我解决这个错误,我将不胜感激。

#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个回答

10

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


5
请注意,这是Valgrind擅长为您准确定位的内容。如果您在大块代码中执行此操作,则Valgrind会指出错误所在的行。
对于如今学习C语言而言,Valgrind是必不可少的工具。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接