面试题答案
一键面试- 字段排列方式:将
u8
放在最前面,接着是i32
,最后是自定义的具有固定大小的结构体成员。 - 原因:
- 内存对齐原则:在Rust(以及很多其他语言)中,数据类型在内存中存储时需要遵循内存对齐原则。不同的数据类型有不同的对齐要求。
u8
类型大小为1字节,对齐要求是1字节;i32
类型大小为4字节,对齐要求是4字节。如果u8
在前面,它自身对齐要求低,不会引入额外的填充字节。如果i32
在u8
前面,由于i32
的对齐要求,u8
后面可能需要填充3个字节以满足i32
的对齐。 - 整体内存布局优化:将对齐要求低的类型放在前面,可以减少结构体整体的内存填充,从而更有效地利用栈内存。对于自定义的具有固定大小的结构体成员,它同样有自己的对齐要求,将其放在最后,在前面两个字段合理排列的基础上,可以进一步优化整体的内存布局,减少不必要的内存浪费。
- 内存对齐原则:在Rust(以及很多其他语言)中,数据类型在内存中存储时需要遵循内存对齐原则。不同的数据类型有不同的对齐要求。