Si consideri il seguente codice:intesa C dimensioni ++ struct
struct CExample {
int a;
}
int main(int argc, char* argv[]) {
CExample ce1;
CExample ce2;
cout << "Size:" << sizeof(ce1) << " Address: " << &ce1 << endl;
cout << "Size:" << sizeof(ce2) << " Address: " << &ce2 << endl;
CExample ceArr[2];
cout << "Size:" << sizeof(ceArr[0])<< " Address: "<< &ceArr[0] <<endl;
cout << "Size:" << sizeof(ceArr[1])<< " Address: "<< &ceArr[1] <<endl;
return 0;
}
Esempio di stampa:
CE1: Size = 4, Indirizzo: 0039FAA0
CE2: Size = 4, Indirizzo: 0039FA94
ceArr [0] : Dimensione = 4, Indirizzo: 0039FA84
ceArr [1]: Dimensione = 4, Indirizzo: 0039FA88
Con il codice è un 12-byte tra gli indirizzi dei primi due oggetti (CE1 e CE2) ma ci è solo una differenza di 4 byte ween gli oggetti nella matrice.
Ho pensato che l'allineamento dei dati avrebbe avuto qualcosa a che fare con il problema, ma sono ancora perplesso. Qualche idea su cosa sta succedendo qui?
Qual è l'uscita di cui sopra? Mente postare anche nel codice? –