结构体内存对齐方式

91 阅读1分钟
  • 结构体内存对齐遵循如下规则

    (1)第一个成员在结构体变量偏移量为0的地址处,也就是第一个成员必须从头开始;

    (2)其他成员的偏移量为自身大小的整数倍;

    (3)结构体总大小对最大对齐数(通过最大成员来确定)的整数倍;

struct A
{
    char a;     //1个字节,[0]
    double b;   //8个字节,偏移到8的整数倍开始,[8-15]
    bool c;     //1个字节,[16]
    int d;      //4个字节,偏移到4的整数倍开始,[20-23]
    float e;    //4个字节,偏移到4的整数倍开始,[24-28]
};
//最大对齐数为8,所以A的大小为32
struct B
{
    char a;
    double b[128];
};
//sizoef(B)=1032

参考文章:www.cnblogs.com/ligiggy/p/1…