Structs, Padding & Alignment
struct groups heterogeneous data into a single type. The compiler inserts padding bytes between fields to satisfy alignment requirements (each type must sit at an address divisible by its size). sizeof(struct) may be larger than the sum of field sizes. Field ordering matters — reordering fields from largest to smallest minimizes padding. __attribute__((packed)) removes padding (use sparingly — unaligned access is slow or UB on some architectures). offsetof(type, member) gives a field’s byte offset.