我的理解是,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