大数跨境
0
0

什么是内存对齐?

什么是内存对齐? 易道云信息院
2023-09-17
0
导读:什么是内存对齐?

一、内存对齐
内存对齐:编译器将程序中的每个“数据单元”安排在字的整数倍的地址指向的内存之中。

二、内存对齐的原则

  • 结构体变量的首地址能够被其最宽基本类型成员大小与对齐基数中的较小者所整除;

  • 结构体每个成员相对于结构体首地址的偏移量 (offset) 都是该成员大小与对齐基数中的较小者的整数倍,如有需要编译器会在成员之间加上填充字节 (internal padding);

  • 结构体的总大小为结构体最宽基本类型成员大小与对齐基数中的较小者的整数倍,如有需要编译器会在最末一个成员之后加上填充字节 (trailing padding)。


三、进行内存对齐的原因:(主要是硬件设备方面的问题)

  • 某些硬件设备只能存取对齐数据,存取非对齐的数据可能会引发异常;

  • 某些硬件设备不能保证在存取非对齐数据的时候的操作是原子操作;

  • 相比于存取对齐的数据,存取非对齐的数据需要花费更多的时间

  • 某些处理器虽然支持非对齐数据的访问,但会引发对齐陷阱(alignment trap);

  • 某些硬件设备只支持简单数据指令非对齐存取,不支持复杂数据指令的非对齐存取。

四、内存对齐的优点

  • 便于在不同的平台之间进行移植,因为有些硬件平台不能够支持任意地址的数据访问,只能在某些地址处取某些特定的数据,否则会抛出异常;
  • 提高内存的访问效率,因为 CPU 在读取内存时,是一块一块的读取。

END

下期精彩继续

等你来哦

👇👇👇

【声明】内容源于网络
0
0
易道云信息院
致力成为编程领域最值得信赖的学习服务平台
内容 35
粉丝 0
易道云信息院 致力成为编程领域最值得信赖的学习服务平台
总阅读19
粉丝0
内容35