计算结构体大小——结构体内存对齐

结构体对齐原则

  1. 第一个成员在在与结构体变量为0的地址处

  1. 其他成员要对齐到某个数字(即对齐数)的整数倍地址处

(对齐数 = 编译器默认对齐数与该成员对齐数中小的那一个)

3.结构体的总大小是对齐数的倍数(每一成员都有自己的对齐数)

4.如果嵌套了结构体,结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是它本身(嵌套的结构体)最大对齐数的整数倍

举个例子来说明(使用vs2022,默认对齐数为8)

struct S1  //24
{
    char ch1;     //成员变量大小为1  对齐数为1 
    char ch2;     //成员变量大小为1  对齐数为1
    int i;       //成员变量大小为4   对齐数为4    
    float f;     //成员变量大小为4   对齐数为4
    double d;    //成员变量大小为8   对齐数为8
    //具体如图,结构体大小为24
};
计算结构体大小——结构体内存对齐_第1张图片

你可能感兴趣的:(c语言)