在 Rust 中,元组(Tuple)、结构体(Struct)和枚举(Enum)的内存布局是由编译器管理的,默认情况下(),编译器会为了减少内存占用和满足内存对齐要求而对字段顺序进行重排。 以下是它们在内存布局上的详细区别和核心机制: --- 1. 结构体 (Struct) 和 元组 (Tuple) 从内存布局的角度来看,元组和结构体几乎是完全一样的。元组可以被看作是“匿名的结构体”,其字段名为 , , ...。 核心特征:积类型 (Product Type) 它们的大小等于所有字段的大小之和,加上为了满足内存对齐(Alignment)而插入的填充字节(Padding)。 内存布局规则: 1. 字段重排 (Field Reordering): 默认情况下,Rust 不保证字段在内存中的顺序与代码中定义的顺序一致。编译器会重新排序字段,以最小化由于对齐要求而产生的填充字节。 例子: 如果你定义了 。 C 语言 (未优化): (1 byte) + (3 bytes) + (4 bytes) + (1 byte) + (3 bytes) = 12 bytes。 Rust (默认): 编译...