[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: