主要观点:在堆或栈上分配值时,分配器需确保指针有正确对齐,结构体布局复杂且可能浪费空间,Swift 有稍好的布局算法,和大多数语言不同,sum 类型如Option<T>
通常布局方式会浪费空间,若将Option
的标签放在末尾则可像Quux<T>
一样节省空间,已知只有 Swift 这样布局且未找到相关讨论或文档,在 Rust 中Option<Option<u64>>
大小为 16 是因编译器优化,若要匹配上述大小计算需显式要求稳定布局。
关键信息:指针对齐概念及影响、结构体布局方式及大小计算、sum 类型的常见布局及优化、Swift 和 Rust 中关于Option
的不同处理。
重要细节:不同结构体字段的对齐要求及计算方式,如struct Foo
和struct Bar
;Swift 中Quux<T>
的布局及大小变化;Rust 中Option<Option<u64>>
大小为 16 的原因及如何显式要求稳定布局等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。