内存对齐

内存对齐,是编译器采用一些对齐规则,把程序的每个数据单元安排在适当的地址。

 

平台硬件原因和效率原因两个方面来回答。

首先,不是所有的硬件平台都可以访问任意内存地址上的数据,某些平台只能在一些地址处获取特定类型的数据,否则会抛出硬件异常。为了使得一个程序可以在多个平台上运行,需要进行内存对齐。

第二,经过内存对齐之后,CPU访问内存的速度就会大大提升。CPU读取内存的时候不是一次读取单个字节,而且按照块来读取的,块的大小可以是2.4.8.16个字节,具体读取多少个字节取决于硬件。假设cpu把内存划分为4字节大小的块。比如0是char,1.2.3.4才是int,如果没有内存对齐,那么cpu就要先读取前四个字节的数据,然后读取后四个字节的数据,然后再合并1.2.3.4.的数据,即一共需要两次寻址一次合并。


内存对齐虽然在一定程度上浪费了资源,但实际上计算机资源都是充足的,更希望提高运行速度。

posted @   花与不易  阅读(256)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
历史上的今天:
2021-03-08 常见排序
2021-03-08 模板元编程和constexpr的关系
点击右上角即可分享
微信分享提示