tao-of-rust-codes
tao-of-rust-codes copied to clipboard
「第四章」内存对齐新增对于u8情况下的内存对齐情况描述
// #[repr(align(8))]
struct A {
a: [u8; 6],
b: u8,
}
struct B {
a: [u8; 5],
b: u16,
}
fn main() {
println!("{:?}", std::mem::size_of::<A>()); // 7
println!("{:?}", std::mem::size_of::<B>()); // 8
}
其实结构体A是一种未补齐情况,因为u8是一个字节,最小内存分配单元。如果需要补齐,则使用#[repr(align(8))]。对于新手也许需要增加这一概念的说明。