我的理解是,enum
就像C中的union
,系统将分配enum中最大的数据类型。为什么枚举需要额外的内存大小?
enum E1 {
DblVal1(f64),
}
enum E2 {
DblVal1(f64),
DblVal2(f64),
DblVal3(f64),
DblVal4(f64),
}
fn main() {
println!("Size is {}", std::mem::size_of::<E1>());
println!("Size is {}", std::mem::size_of::<E2>());
}
为什么E1
占用8个字节的预期,但E2
占用16个字节?
对于8字节的增加:这是简单地约存储器对齐。大部分空间都没有使用。这只是填充。 – sellibitze 2014-12-06 01:04:37
我很高兴看到Rust枚举的内存布局。任何人都知道那篇文章? – RajV 2014-12-08 21:26:17