网站解析加速,东莞饰品网站建设,wordpress插件列表,网站前台开发教程文章目录 一、内存对齐规则二、结构体的整体对齐#xff1a; 一、内存对齐规则
1.第一个数据成员#xff1a;结构体的第一个数据成员总是放置在其起始地址处#xff0c;即偏移量为0的位置。 2.其他数据成员的对齐#xff1a;每个后续成员的存储地址必须是其有效对齐值的整… 文章目录 一、内存对齐规则二、结构体的整体对齐 一、内存对齐规则
1.第一个数据成员结构体的第一个数据成员总是放置在其起始地址处即偏移量为0的位置。 2.其他数据成员的对齐每个后续成员的存储地址必须是其有效对齐值的整数倍。
自身对齐值是指该成员类型的大小例如int 类型通常是4字节。
指定对齐值可以通过 #pragma pack(N) 宏来设定其中 N 必须是2的幂次方如1, 2, 4, 8, 16等。如果没有特别指定不同平台有不同的默认值在32位Linux系统上默认为4。 在64位系统上默认为8。 在ARM CPU上默认也为8。 有效对齐值是自身对齐值与指定对齐值中的较小者。
二、结构体的整体对齐
1.结构体的总大小是其所有成员中最大的有效对齐值或指定对齐值取两者中的较小者的整数倍。 2.这意味着编译器可能会在结构体末尾添加填充字节以确保整个结构体满足上述对齐要求。