This example demonstrates how pack(2) aligns
integer variable b to a 2-byte boundary.
typedef struct
{
char a;
int b;
} S;
#pragma pack(2)
typedef struct
{
char a;
int b;
} SP;
S var = { 0x11, 0x44444444 };
SP pvar = { 0x11, 0x44444444 };
The layout of S is as shown in Figure 1, while the layout
of SP is as shown in Figure 2. In Figure 2, x denotes
one byte of padding.
Note
SP is a 6-byte structure. There is no padding
after b.