On Fri, Oct 20, 2000 at 08:38:31PM -0400, Mario Torre wrote: > Ho avuto modo di valutare un test riguardo il padding, e sembra che il gcc > perda decisamete, con uno scarto di 3 byte su una struttura semplice: > > struct x { > int a; > char b; > }; > > sizeof(struct x) = 8 Ciao, il problema e' che su architetture a 32 bit e' _molto_ piu' efficiente in termini di tempo accedere a dati che sono allineato rispetto a dwords (ovvero, che occupano indirizzi di memoria multipli di 4). Per questo nella struttura sopra vengono riservati 4 bytes per un misero char... Se hai problemi di spazio, puoi sempre dichiarare che la struttura deve essere "impachettati": struct x { int a; char b; } __attribute__ ((packed)); sizeof(struct x) = 5 In gcc ci sono un sacco di attributi e di opzioni da linea di comandi che ti permettono di fare regolazione fine del codice che vuoi produrre... Puoi fare riferimento, ad es., a http://gcc.gnu.org/onlinedocs/gcc_4.html#SEC97 per i dettagli sull'attributo "packed". > E' giusto e non si tratta di un errore, e non ho test in mano sulle > prestazioni effettive, ma basandosi solo sugli allineamenti, BC++ vince > nettamente (immaginate strutture complesse e variegate, magari in un > programma di gestione...) Mah, il compromesso fra tempo di calcolo e memoria occupata e' una cosa molto delicata! Molto meglio lasciare la decisione al programmatore, piuttosto che al compilatore. (Comunque, sarei veramente interessato in un confronto serio fra gcc e altri compilatori....) Ciao, Marco -- Per disicriversi basta spedire un messaggio con SOGGETTO "unsubscribe" a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx Gestione via web: http://freelists.dhs.org