Consideremos el siguiente código:entendimiento C tamaño 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;
}
ejemplo de salida:
ce1: Tamaño = 4, Dirección: 0039FAA0
ce2: Tamaño = 4, Dirección: 0039FA94
ceArr [0] : Tamaño = 4, Dirección: 0039FA84
ceArr [1]: Tamaño = 4, Dirección: 0039FA88
Con el código hay un 12-byte entre las direcciones de los dos primeros objetos (CE1 y CE2) pero hay es solo una apuesta de diferencia de 4 bytes ween los objetos en la matriz.
Pensé que la alineación de datos tendría algo que ver con el problema, pero todavía estoy perplejo. ¿Alguna idea de lo que está pasando aquí?
Cuál es la salida de los anteriores? ¿Te molesta publicar eso también en el código? –