Nessun arcano ...

Per motivi di efficienza, tutti i compilatori allineano le strutture in memoria.
Per molti compilatori l'allineamento di default e' agli 8 byte cosicche' i byte che mancano sono effettivamente allocati ma non usati.

Non so quale compilatore utilizzi, ma in genere esistono dei parametri di compilazione con cui e' possibile modificare questo comportamento.

Con VC, ad esempio, per allineare le strutture al byte si usa l'opzione /Zp1