【发布时间】:2021-12-17 15:23:03
【问题描述】:
假设我们有一个 64 位 cpu,它总是一次读取 8 个字节的内存,我想存储一个 4 个字节的 int。根据自然对齐的定义,一个 4 字节的对象与一个 4 的倍数的地址对齐(例如 0x0000、0x0004)。但是问题来了,为什么我不能将它存储在地址 0x0001 中?据我了解,由于 CPU 总是会读取 8 个字节的数据,因此从地址 0x0000 读取仍然可以一次性获得存储在 0x0001 的 int。那么,为什么在这种情况下需要自然对齐呢?
【问题讨论】: