Los compiladores alinean automaticamente los datos, insertando bytes de relleno para asegurar que cada miembro este alineado correctamente para un acceso mas rapido a ellos.
- typedef struct  
- { 
-     char a; 
-     char relleno[3]; // para completar 4 bytes 
-     int b; 
-     char c; 
-     char relleno[3]; //para completar 4 bytes 
- } A; 
-   
- typedef struct  
- { 
-     char a; 
-     char c; 
-     char relleno[2]; //para completar 4 bytes 
-     int b; 
- } B; 
Una instancia de una estructura tendra la alineacion de su miembre de mayor número bytes. Puedes evitar la alineación usando la directiva 
#pragma pack(1) pero no es recomendable porque podría tener un severo impacto en el rendimiento