author:zhangtao
link:[https://blog.csdn.net/weixin_45157820/article/details/112755832]
C语言结构体对齐步骤:
结构体各成员对齐.
结构体总体对齐
C语言结构体对齐规则:
结构体(struct)的数据成员,第一个数据成员存放的地址为结构体变量偏移量为0的地址处.
其他结构体成员自身对齐时,存放的地址为min{有效对齐值为自身对齐值, 指定对齐值} 的最小整数倍的地址处. 注:自身对齐值:结构体变量里每个成员的自身大小 注:指定对齐值:有宏 #pragma pack(N) 指定的值,这里面的 N一定是2的幂次方.如1,2,4,8,16等.如果没有通过宏那么在32位Linux主机上默认指定对齐值为4,64位的默认对齐值为8,AMR CPU默认指定对齐值为8; 注:有效对齐值:结构体成员自身对齐时有效对齐值为自身对齐值与指定对齐值中 较小的一个.
总体对齐时,字节大小是min{所有成员中自身对齐值最大的, 指定对齐值} 的整数倍. #pragma pack(N) 每个特定平台上的编译器都有自己的默认“ ...