align算是老生常谈了: 数据按照某个cache line大小align的话会改进cache效率, 因此默认情况下,编译器会自动把class数据进行align; class与其member的align尤其自己规则,直接导致: struct size ... {uint32 member0;uint8 member1;} ;(sizeof(size) != sizeof(uint32) + sizeof(uint8)) is usually true ;struct compose_good ... { uint8 mem0; uint16 mem1; uint32 mem2;} ;struct compose_bad ... { uint8 mem0; uint32 mem1; uint16 mem2;} ;(sizeof(compose_good) < sizeof(compose_bad)) is usually true ;