|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2005
Città: Catania
Messaggi: 188
|
[C++]
Ciao ragazzi, ho una domanda da farvi.
Sto usando una struttura nel mio codice C++ che ha all'interno uno short int (2 byte) e un char (1 byte). Perchè quando vado a fare sizeof(miaStruttura) mi dice che occupa 4 byte? Addirittura se metto int (4 byte) al posto di short, mi dice che la struttura occupa 8 byte....Sapete dirmi perchè? |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jul 2003
Città: pisa
Messaggi: 141
|
vengono inseriti dei byte aggiuntivi per far sì che i campi siano allineati in memoria (l'accesso risulta solitamente più veloce)
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2005
Città: Catania
Messaggi: 188
|
Quindi avrò solo multipli di 4...non posso fare una struttura di 3 byte in pratica...
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
#pragma pack(1)
typedef struct
{
short a;
char b;
} MIASTRUCT;
#pragma pack()
Notare che le direttive pragma sono specifiche per ogni compilatore, quindi non tutti i compilatori potrebbero avere il pragma pack (sebbene molti ce l'hanno).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Non esiste alcun problema, per i processori Intel, far iniziare una word ad una locazione di memoria che sia dispari, ma non e' cosi' per tutti. In tal caso non puoi cambiare lo stile di allineamento
__________________
In God we trust; all others bring data |
|
|
|
|
|
|
#6 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Ma sono questioni che dipendono da cosa si sta usando ... e quindi è da verificare, non posso conoscere tutti i processori/compilatori su questa terra. Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2005
Città: Catania
Messaggi: 188
|
Grazie ragazzi, sempre tempestivi e precisi....Mi siete stati di grande aiuto
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:45.



















