概述
结构体声明中加上__attribute__((packed))
,可以防止编译器对结构进行字节对齐优化。
使用__attribute__((aligned(8)))
(8为对齐字节数),可以强制编译器按指定字节对齐。
结构体定义
使用 packed
1 | struct AlignTest |
使用sizeof获取结构体的大小,返回7
不使用 packed
1 | struct AlignTest |
根据结构体中最长的类型(int),进行对齐,获取到的结构体大小为8
指定对齐大小
1 | struct AlignTest |
不使用指定对齐字节时,结构体大小为3*4=12,指定后变为16