2012-02-14 8 views
9

Sono relativamente nuovo su C, sto cercando di eseguire un programma semplice e ottengo questo messaggio di errore: Errore di segmentazione (core dumped) Voglio solo stampare qualsiasi valore dei bit dell'array ma io non posso, gradirei qualsiasi aiuto su questo errore.Errore di segmentazione (core scaricato)

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

risposta

9

La matrice sembra superare la dimensione dello stack (i bit sono una matrice nello stack). Puoi provare a renderlo globale o allocare l'array usando malloc.

+0

Ha funzionato grazie! – Percy

5

Nota che questo è il genere di cose che Valgrind è bravo a individuare per te. Se avessi fatto questo all'interno di una grossa porzione di codice, Valgrind ti avrebbe indirizzato alla linea che era sbagliata.

Per imparare C in questo giorno ed età, Valgrind è indispensabile.

+3

non proprio una risposta, più un commento – David