5.8 属性声明aligned & packed
aligned
用于指定结构体类型、联合类型、变量的地址对齐
单位:字节
大小:2的幂
char c2 __attribute__((aligned(16))) = 4 ;
思考
编译器一定会按照aligned指定的方式对齐吗?
不会
packed
- 指定变量和类型(结构体、联合、枚举)使用最小可能的对齐
- 减少元素之间因边界对齐而造成的内存空洞如:寄存器定义
struct data{
char a;
short b ;
int c ;
}__attribute__((packed,aligned(8)));