El tipo de cada miembro de la estructura generalmente tiene una alineación predeterminada, es decir, cada miembro de la estructura está alineado en un límite predeterminado. Por esta razón, el relleno se realiza en el siguiente ejemplo wiki:¿Por qué favorecer la alineación de la estructura de datos?
struct MixedData
{
char Data1;
short Data2;
int Data3;
char Data4;
};
struct MixedData /* After compilation in 32-bit x86 machine */
{
char Data1; /* 1 byte */
/* 1 byte for the following 'short' to be aligned on a 2 byte boundary
assuming that the address where structure begins is an even number */
char Padding1[1];
short Data2; /* 2 bytes */
int Data3; /* 4 bytes - largest structure member */
char Data4; /* 1 byte */
char Padding2[3]; /* 3 bytes to make total size of the structure 12 bytes */
};
¿Cuál es la (práctica) por lo que la alineación debe ser preservado?
posible duplicado de [¿Por qué C++ no ajusta la estructura?] (Http://stackoverflow.com/questions/6730664/why-doesnt-c-make-the-structure-tighter) –
Consulte este enlace. Le ayudará a comprender cómo la alineación permite el acceso rápido. http://www.geeksforgeeks.org/archives/9705 –