Sì, infatti ti ho detti "a parte l'allineamento" ... ad esempio, se hai due strutture del tipo
struct s1
{
char c;
int i;
};
struct s2
{
int i1;
int i2;
};
e l'allineamento è a 4 byte (32 bit), allora tutte e due le strutture avranno sizeof = 8, ovvero nella prima ci sarà il primo carattere utilizzato, tre caratteri non utilizzati e poi l'intero a 4 byte.
Puoi cambiare l'allineamento fino ad utilizzare tutti i byte (ma facendo fare più lavoro alla CPU), con una iniziale
#pragma pack(1)
e in questo caso la prima sizeof sarà uguale a 5 e la seconda a 8