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 -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/36307.151.32.166.21.1356948957.squir...@mail.dm.unipi.it