C语言内存对齐
1. 结构体内存对齐
a.结构体内存对齐最大宽度为结构体内部最大类型的宽度
b.是否需要跨内存首先判断最大宽度减前面余下空间是否足够当前类型所需空间,然后起始地址必须是当前类型的整数倍,如short必须是在2 的倍数的内存上
2.位域内存对齐
a.如果位域成员类型相同,则自动压缩,一次自增对齐
b.如果位域成员类型不同,则不同编译器不相同,有的压缩有的不压缩
c.如果位域中有成员不是位域类型,则所有的都不压缩
3.共用体内存对齐
1. 结构体内存对齐
a.结构体内存对齐最大宽度为结构体内部最大类型的宽度
b.是否需要跨内存首先判断最大宽度减前面余下空间是否足够当前类型所需空间,然后起始地址必须是当前类型的整数倍,如short必须是在2 的倍数的内存上
2.位域内存对齐
a.如果位域成员类型相同,则自动压缩,一次自增对齐
b.如果位域成员类型不同,则不同编译器不相同,有的压缩有的不压缩
c.如果位域中有成员不是位域类型,则所有的都不压缩
3.共用体内存对齐