内存对齐

参考
1、什么是内存对齐?

char c;
int a;

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

2、为什么有内存对齐?
(1)硬件原因
对于跨平台的程序,由于不同的硬件平台,其CPU一次读取的字节数不同,通过内存对齐减少CPU对内存的操作次数,提升程序运行速度。
(2)平台原因
不是所有的硬件平台都能访问任意内存地址上的任意数据,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。为了同一个程序可以在多平台运行,需要内存对齐。

3、谁来执行内存对齐这个优化操作?
编译器

内存对齐虽然造成一定的内存空间浪费,但是换来了更大的时间效益!

posted @ 2025-11-17 13:57  Nickey103  阅读(4)  评论(0)    收藏  举报