RustMagazine/rust_magazine_2021

蚂蚁集团 | Rust 数据内存布局 - Rust精选

utterances-bot opened this issue · 2 comments

蚂蚁集团 | Rust 数据内存布局 - Rust精选

The roots aren't deep but the seeds are planted!

https://rustmagazine.github.io/rust_magazine_2021/chapter_6/ant-rust-data-layout.html

......

数据布局

......

Rust 中数据对齐

struct A {
 b: u32,
 c: u16,
 _pad1: [u8; 2], 
 a: u8,
 _pad2: [u8; 3],
}

......

此处应改为:

struct A {
 b: u32,
 c: u16, 
 a: u8,
 _pad1: [u8, 1],
}

原因:字段c,a之间并无padding,且结构体A实例的大小为8字节。

println!("{}", std::mem::size_of::<A>());	// output: 8

由上可见,A的大小为8字节,而非12字节。

确实,因为对齐到 4,所以 8 就可以了。我修改下原文。