Rust基础(9)-struct内存分布

struct的内存分布,大小堆对齐情况

概述

  1. 在x86平台(64位系统),按照32位来对齐
  2. 一种类型的大小,是它对齐属性的整数倍
  3. 结构体对齐属性,是它所有成员中,对齐属性最大的那个

案例

标准计算出,需要12个字节,但rust做了优化,最终只有8个字节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use std::mem;

struct A {
a: u8, // 1 byte
//填充 // 3 byte
b: u32, // 4 byte
c: u16, // 2 byte
//填充 // 2 byte
}

fn main() {
let aa = A { a: 1, b: 2, c: 3 };
//打印出的是字节,x8后,就是位数
println!("size = {}",mem::size_of::<A>());
println!("size = {}", mem::size_of_val(&aa));
}

总结

本文编辑完毕

参考

[1] Rust 程序设计语言

  • Copyrights © 2017-2023 Jason
  • Visitors: | Views:

谢谢打赏~

微信