为了账号安全,请及时绑定邮箱和手机立即绑定

内存对齐的目的

内存对齐的目的

内存对齐的目的诚然,我不明白。假设您有一个内存,内存字长度为1字节。为什么不能访问未对齐地址上的单个内存访问中的一个4字节长的变量(即不能被4整除),就像对齐地址的情况一样?
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

你可以用一些处理器(尼哈伦人能做到这一点),但是以前所有的内存访问都是在64位(或32位)线上对齐的,因为总线是64位宽的,所以您必须一次取64位,并且用对齐的64位“块”来获取这些数据要容易得多。

所以,如果你想要一个字节,你取了64位块,然后屏蔽掉你不想要的比特。如果您的字节位于正确的一端,那么简单且快速,但是如果它位于64位块的中间,则必须屏蔽不需要的位,然后将数据转移到正确的位置。更糟糕的是,如果您想要一个2字节变量,但它被分割成两个块,那么这就需要双倍于所需的内存访问。

因此,当每个人都认为内存很便宜时,他们只是让编译器将数据对齐在处理器的块大小上,这样您的代码就会以浪费内存为代价,运行得更快、效率更高。


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 768 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信