C++中数据对齐

大体看了看数据对齐,不知道是否正确,总结如下:

struct A

{

  char name;

  double dHeight;

     int age;

};

sizeof(A) = (1+7+8+4+4) = 24; 

这是编译器默认下的对齐方式,struct和class一致。

 

如果人工添加代码设置对齐方式,如下

#pargma pack (4)

struct A

{

  char name;

  double dHeight;

     int age;

};

sizeof(A) = 1+3+8+4 = 16

首先#pargma pck (n) ,n为对齐数,分为如下情况:1. 如果n大于等于变量字节数,则按照默认对齐 2. 如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数。

你可能感兴趣的