假设我们有一个数据包
struct Foo
{
short size; // 2
short type; // 2
BYTE data; // 1
//1 byte padding not 3?
};
编译后它的长度为 6 个字节,并在结构的末尾添加了 1 个字节的填充。编译器不应该添加 3 个字节的填充以使结构大小为 8 个字节长吗?因为 32 位 cpu 喜欢访问 4 字节块中的数据
顺便说一句,#pragma pack(1) 它有 5 个字节长,正如预期的那样。