边界对齐存储

  1. 结构体或类内数据元素长度都小于机器字长, 对齐单元 = 最长的数据元素长度。

  2. 结构体或类内数据元素长度存在大于机器字长的数据元素, 对齐单元 = 机器字长。

在64位计算机中,最长的数据元素为8个字节,对齐单元 = 最长的数据元素长度,数据项仅仅能存储在地址是数据项大小的整数倍的内存位置上。例如:

long long 占8字节,只能放在首地址为0,8,16等位置
int 占4字节,只能放在首地址为0,4,8等位置
char 占1字节,能放在任意位置
在32位中,若存在long long,则 > 机器字长,对齐单元 = 机器字长=4,所以 long long有可能在4的倍数的地址上。

你可能感兴趣的:(笔记)