Rust 内存对齐

https://github.com/bvanjoi/blog/blob/master/src/Rust%E4%B8%AD%E5%86%85%E5%AD%98%E5%AF%B9%E9%BD%90/README.md 

https://stackoverflow.com/questions/32428153/how-can-i-align-a-struct-to-a-specified-byte-boundary 

use std::mem; struct MyStruct { a: u8, b: u32, c: u16, } fn main() { println!("Size of MyStruct: {}", mem::size_of::<MyStruct>()); println!("Alignment of MyStruct: {}", mem::align_of::<MyStruct>()); } // Size of MyStruct: 8 // Alignment of MyStruct: 4

• 按照对齐要求排序字段,避免不必要的填充。为了减少填充字节,通常会把对齐要求大的字段放在前面,对齐要求小的字段放在后面。这样可以尽量避免由于字段之间的对齐不匹配而导致的填充字节。

• 使用紧凑的数据类型和 Option 来节省空间。Rust 能够利用未初始化状态来表示 None,而不需要额外的内存开销。因此在设计数据结构时,选择 Option 而不是 bool + 数据类型 的组合可以节省内存。

struct MyStruct {     a: Option<u32>,  // 只占用 4 字节,而不是额外的空间 }

• 使用 #[repr(C)] 保证跨平台一致性,但通常会牺牲性能。

• 使用 #[repr(packed)] 来取消对齐,但可能会导致性能问题和访问错误。