内存对齐
参考
1、什么是内存对齐?
char c;
int a;
非内存对齐:在内存中,变量c后紧跟着变量a。

2次寻址操作 + 1次合并操作才能读取变量a的值。
内存对齐:假设CPU一次读取4个字节,变量c后空出3个字节,再存储变量a。

1次寻址操作便能读取变量a的值。
2、为什么有内存对齐?
(1)硬件原因
对于跨平台的程序,由于不同的硬件平台,其CPU一次读取的字节数不同,通过内存对齐减少CPU对内存的操作次数,提升程序运行速度。
(2)平台原因
不是所有的硬件平台都能访问任意内存地址上的任意数据,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。为了同一个程序可以在多平台运行,需要内存对齐。
3、谁来执行内存对齐这个优化操作?
编译器
内存对齐虽然造成一定的内存空间浪费,但是换来了更大的时间效益!

浙公网安备 33010602011771号