Can anyone please explain me this?

Apparently there is a space containing two bytes that is beeing unused after field a. Can someone tell my why is this happening and is there a way to "turn off" such behavior? I really need it to work normally.
Can anyone please explain me this?

Apparently there is a space containing two bytes that is beeing unused after field a. Can someone tell my why is this happening and is there a way to "turn off" such behavior? I really need it to work normally.
 
    
    This IS "working normally". Your compiler aligns the second member b to optimize for speed. The default alignment for an unsigned int on your platform is 4 bytes, so padding bytes are added after a.
To turn this off, you can use pragmas depending on your compiler, but don't call this "abnormal behavior".
