通信,电信,互联网技术论坛
发新话题
打印

要点9、优化成员的排列

要点9、优化成员的排列

  一个类的大小可以被下面的方式改变:

struct A

{
 bool a;
 int b;
 bool c;
}; //sizeof (A) == 12

  在我的电脑上sizeof (A) 等于12。这个结果可能会让你吃惊,因为A的成员总
数是6个字节:1+4+1个字节。那另6字节是哪儿来的?编译器在每个bool成员后面
都插入了3个填充字节以保证每个成员都是按4字节排列,以便分界。你可以减少A
的大小,通过以下方式:

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

  这一次,编译器只在成员c后插入了2个字节。因为b占了4个字节,所以就很自
然地把它当作一个字的形式排列,而a和c的大小1+1=2,再加上2个字节就刚好按两
个字的形式排列B。

TOP

发新话题