我正在研究打包枚举,同时我运行了以下程序
enum SizeEnum {
V1(u32, u32),
// V2(u64),
V3(u32, u32),
}
fn main() {
println!("{:?}", std::mem::size_of::<SizeEnum>());
}
输出为12字节(96位).我所期望的是16字节(128位).这就是当我取消对V2
个变体的注释时发生的事情.
问题包括:
- 那么,为什么
u32, u32
版本比u64
版本使用更少的空间呢? - 为什么是12字节(96位)而不是64+8(72位)?我猜这是关于填充物的问题,但希望得到详细的答案.