首页 > 其他 > 详细

结构体内存对齐的原则及原理

时间:2018-08-11 12:08:41      阅读:173      评论:0      收藏:0      [点我收藏+]

结构体是C语言的一大特色,今天就来思考两个问题。

  1. 它的成员的顺序排列有什么要求吗?

原则一:结构的首变量地址偏移量offset0,之后每个变量的首地址都要是其本身宽度的整数倍。总size=(0+1)+(3+4)+(0+8)=16

 技术分享图片

 

原则二:结构体的大小一定是最大成员宽度的整数倍,依照原则1,总size=8+4+1=13;因为原则二,所以要在char后补齐3位,总size=16

 技术分享图片

 

  2.为什么要设计内存对齐这种方式?

cpu需要取4个连续的字节时,若内存起始位置的地址可以被4整除,那么我们称其对齐访问,首先很多CPU并不支持非对齐的内存访问,比如我们使用的stm32(有些x86结构的复杂指令集CPU,可以非对齐内存访问,他采取多次读取对齐的内存,然后拼接数据来实现;但这样会增加数据访问的时间,和电路设计的复杂性);硬件电路为何会更复杂这个问题,先不深入讨论。所以内存对齐明白会提高CPU的访问速度就 OK了。

结构体内存对齐的原则及原理

原文:https://www.cnblogs.com/lzd626/p/9459125.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!