c语言结构体对齐规则 如何理解按边界对齐的数据存储?
如何理解按边界对齐的数据存储?
1 32位处理器,也就是说,CPU一次从内存中读取4字节的数据。2边界对齐,即为了存储一定长度的M字节的数据,存储地址需要存储为M字节的整数倍,结构的整体大小是最大成员长度的整数倍。
内存对齐的目的和规则?
有四种内存对齐原则:
1)。数据成员对齐规则:结构(或联合)的数据成员。第一个数据成员放置在偏移量为0的位置。之后,每个数据成员存储的起始位置从成员大小或其子成员大小的整数倍开始(只要成员有子成员,如数组、结构等)(例如,如果在32位计算机中int是4字节,则应从4的整数倍地址开始存储)。基本类型不包括struct/class/Uinon。
2) . struct as member:如果一个结构中有一些结构成员,那么应该从结构中“最宽的基本类型成员”的整数倍地址存储结构成员。(结构a包含结构B,而B包含char、int、double和其他元素,那么B应该从8的整数倍存储。)。
3) . 收尾工作:结构的总尺寸,即sizeof的结果,必须是结构内部最大构件的“最宽基本型构件”的整数倍。弥补不足。(基本类型不包括struct/class/Uinon)。
4) . sizeof(Union),结构中最大的元素是Union的大小,因为在特定时间,只有Union的一个成员实际存储在地址中。
c语言结构体对齐规则 结构体怎么输入数据 c语言结构体删除一个数据
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。