c++技巧---类成员对齐方式的优化
帐 号: 注册帐号
密 码:  找回密码
      记住用户名和密码
c++技巧---类成员对齐方式的优化

只需改变类成员的声明顺序就可以改变这个类的大小:

struct A{ bool a; int b; bool c;}; /*sizeof (A) == 12*/
 
  在我的机器上,sizeof (A) 等于12。结果看起来非常的出乎意料,因为A的成员大小之和仅仅是6个字节,多余的6个字节来自何方呢?编译器在每个bool类型成员的后面插入了各插入三个填充字节,使得它四字节边界对齐。你可以按照下面的方式重新组织数据成员减少A的大小:

struct B{ bool a; bool c; int b;}; // sizeof (B) == 8

  这次编译器只是在成员c的后面插入两个填充字节。因为b占4字节,它自然就word边界对齐,而不需要额外的填充字节。

copyright:2016-2020|邮箱:imalib@vip.163.com

蜀ICP备16020986号