Re: segfault su Debian & su centos 5 no
On 31/12/2012 12:14, emmanuel segura wrote:
non mi spiego perche
su debian a 64 non funziona invece su una debian a 32bit e su centos 32 bit
attenzione, non funziona. Sembra funzionare, ma non funziona.
Il segfault non è detto che avvenga sempre allo stesso modo e nello
stesso punto.
> typedef struct Name {
> char *name;
> int id;
> } name_t;
>
> name_t pa[];
pa[i].name = "Pippo";
per esempio sai cosa fa quest'istruzione?
Di certo non inserisce in name la stringa "Pippo\0". name è una
variabile che contiene un numero: un indirizzo di memoria.
Quello che probabilmente fa con quel ciclo è far si che tutti i
puntatori pa[i].name contengano lo stesso valore numerico (indirizzo)
che corrisponde alla memoria dove è contenuta la costante "Pippo".
Però non è detto che questo venga fatto con ogni compilatore, perché non
è questo il modo per assegnare i valori ad un puntatore.
Inoltre, sembra funzionare, perché gli stai soltanto dicendo di andare
alla posizione 'i' a partire dalla posizione 0 allocata con la
dichiarazione di pa[] e se quell'area di memoria è accessibile, allora
la usa... ma potrebbe essere usata contemporaneamente da altro... se non
c'è null'altro che usa quell'area di memoria, allora il tuo programma
sembra funzionare, altrimenti o hai dei malfunzionamenti o un segfault.
Ciao
Davide
--
Dizionari: http://linguistico.sourceforge.net/wiki
Petizione per l'uso di formati accessibili nell'Unione Europea
http://tinyurl.com/y6u4m5
Non autorizzo la memorizzazione del mio indirizzo su outlook
Reply to: