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

本文介绍CPU如何高效访问4字节整数的过程。通过将整数对齐到4的整数倍地址,提高内存访问效率。同时,探讨了C语言编译器如何对结构体和变量进行对齐以优化性能。

 

 

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

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

 

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

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值