check here.
Basically the compiler will insert unused memory into a structure so that data members are optimally aligned for better performance.
Why isn't sizeof for a struct equal to the sum of sizeof of each member?
原文:http://www.cnblogs.com/miaoz/p/3980512.html