Re: segfault su Debian & su centos 5 no
Ciao,
Il Dom, 30 Dicembre 2012 7:45 pm, emmanuel segura ha scritto:
> Sto giocando con un piccolo e stupido programma in C che posto qua sotto,
> sulla mia debian 6.0.6 va in segfault su una centos 5 no, la cosa stranna
[...]
> name_t pa[];
>
> int main()
> {
> int i,SIZE = 255;
> for(i = 0; i <= SIZE; i++)
> {
> pa[i].name = "Pippo";
> pa[i].id = i;
> printf("\t%s - %d\n",pa[i].name,pa[i].id);
> }
> }
Quale sarebbe il risultato atteso da questo programma?
Io, vedendo che questo programma scrive dentro un array per il quale non
è stata allocata memoria, mi aspetterei un "segfault". Quindi direi che
la tua prova con Debian è andata più vicina al risultato atteso.
Come ti hanno già scritto altri, attento ai messaggi del compilatore, il
gcc dice chiaramente:
/tmp/x.c:8:8: warning: array ‘pa’ assumed to have one element [enabled
by default]
Quindi, se 'pa' ha un elemento e tu ne scrivi 256...
Ti consiglierei di cominciare il codice con
#define SIZE 256
definire l'array con
name_t pa[SIZE];
non ridichiarare la variabile SIZE dentro la funzione main e impostare il
ciclo con:
for(i = 0; i < SIZE; i++)
... poi leggere un buon manuale sul C, al capitolo sui puntatori.
Infine compilare con 'gcc -Wall' e leggere _tutti_ i "warning" che il
compilatore tira fuori.
Buono studio,
m
--
http://bodrato.it/software/combinatorics.html
Reply to: