从“unsafe”看数据结构对齐

数据结构对齐是什么?维基百科对其有如下定义:

数据结构对齐是代码编译后在内存的布局与使用方式。包括三方面内容:数据对齐、数据结构填充(padding)与包入(packing)。 内存地址a被称为n字节对齐,当a是n的倍数(n应是2的幂)。 一次内存访问被称为对齐的,当被访问的数据长度为n 字节且该数据地址为n字节对齐。如果内存未对齐,称作misaligned。显然,字节访问总是对齐的。 内存指针是对齐的,如果它所指的数据是对齐的。指向聚合数据(aggregate data,如struct或数组)是对齐的,当且仅当它的每个组成数据是对齐的。

[阅读全文]
rust