class size与align

来源:互联网 发布:网络平台贷款是否合法 编辑:程序博客网 时间:2024/04/30 10:02

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;
原创粉丝点击