Compilers insert padding bytes into structs so fields align with hardware word boundaries (e.g. 4-byte or 8-byte boundaries). Struct packing can be controlled via compiler directives (`#pragma pack(1)`).
c
struct Unpadded {
char a; // 1 byte
// 3 bytes padding
int b; // 4 bytes
char c; // 1 byte
// 3 bytes padding
}; // Total: 12 bytes