For example, there is a structure
struct A
{
char a;
int i;
};
In this case, we have a[1 byte] + padding[3 byte] + int[4 byte] = 8.
Now let's make little update into struct above,
struct A
{
int i;
char a;
};
In this case char comes after int and no need to add padding bytes, it means sizeof(A) = 5 byte, but in this case I also get the 8 byte result. Why ?
Ok, and what about this case
struct s
{
int b;
double c;
char a;
};
According logic given below, there is a: size = b[4 bytes] + padding[4 bytes] + c[8] + a[1] + padding[7 bytes to align with double] = 24
,
but after execution I get 16. How this is possible ?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…