Ciao Bodrato Capisco il tuo consiglio e ti rigranzio, ma comunque non mi spiego perche su debian a 64 non funziona invece su una debian a 32bit e su centos 32 bit si
Il giorno 31 dicembre 2012 11:15, <bodr...@mail.dm.unipi.it> ha scritto: > 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 > > -- esta es mi vida e me la vivo hasta que dios quiera