码迷,mamicode.com
首页 > 其他好文 > 详细

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

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

标签:速度   顺序   bubuko   今天   提高   对齐   增加   连续   原理   

结构体是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了。

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

标签:速度   顺序   bubuko   今天   提高   对齐   增加   连续   原理   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!