变量的内存地址要对齐的意义

 

 

CPU如何访问一个4字节的整数?

CPU将在地址总线发出4个连续的字节的地址。因为CPU的运行速度很快,内存的运行速度相对较慢,所以CPU几乎同时把4个连续的字节的地址发给了内存条,内存条的厂商为了匹配CPU的运行速度,需要把内存条做到并行,所以内存条被设计为以上图示所以的内存存储矩阵,在同一个水平轴的内存单元可以在同一个存取周期内进行存取。所以4字节的整数就需要对齐到4的整数倍的地址上,这样CPU的内存访问效率才更高,所以C语言编译器都尽量将结构体和变量的地址与变量的大小进行对齐,除非用packed进行指定。

 

一个典型的结构体默认编译的存储方式如下:

需要注意的是,其中内存块2单元4,内存块3单元4,内存块4单元4,都被分给了struct student。

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值