数据对齐

假设一个cpu一次只从内存中读取8个字节,那么cpu的只能读取0,8,16,24,...,倘若有一个结构体这么定义:

struct x {
	int x;
	double y;
};

结构体内存结构如下:

此时,若想读取 y 值,则cpu必须读取两次内存:第一次读取字节0-8,第二次读取字节9-16,然后将字节4-12组合成一个double类型,性能较低 。但如果采用下边的分配方法,只需读取一次即可(字节8-20),其中字节4-8是多余的,牺牲内存换来执行效率

这些工作都是操作系统来处理,我们只需了解即可,一般来说,基础数据类型的字节数多大,其地址就必须是该字节数的整数倍。

原文地址:https://www.cnblogs.com/rookiezjz/p/13635877.html