tao-of-rust-codes icon indicating copy to clipboard operation
tao-of-rust-codes copied to clipboard

「第四章」内存对齐新增对于u8情况下的内存对齐情况描述

Open ZhangHanDong opened this issue 6 years ago • 0 comments

// #[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))]。对于新手也许需要增加这一概念的说明。

ZhangHanDong avatar Jul 09 '19 07:07 ZhangHanDong