Ошибка сегментации (ядро сброшено) - PullRequest
8 голосов
/ 14 февраля 2012

Я относительно новичок в 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 ]

10 голосов
/ 14 февраля 2012

Кажется, что массив превышает размер стека (биты - это массив в стеке). Вы можете попробовать сделать его глобальным или выделить массив с помощью malloc.

5 голосов
/ 14 февраля 2012

Обратите внимание, что это именно то, что Вальгринд умеет точно определять для вас. Если бы вы сделали это внутри большого куска кода, Valgrind укажет вам на неправильную строку.

Для изучения C в этот день и возраст, Valgrind это необходимо.

...