YouTube
简介
关于内存对齐总会有各种声音?为什么要对齐,怎么对齐,不对齐有什么影响么?
这些声音可以离我们很远,也可以很近,比如:
- 当你想弄明白
WaitGroup.state1
为什么是[3]uint32
而不是[12]byte
- 当你想知道
struct
是否占用内存是否合理 - 当你不希望在32位系统上原子操作
int64|uint64
时发生panic - 当你闲着没事就是想读读源码提升下逼格。。。
本次分享借自己研究内存对齐的一些代码及源码示例,为大家带来Go里边的内存对齐是什么样的,以及如何利用内存对齐优化数据结构,提高代码的平台兼容性。
大纲
- 了解内存对齐的收益
- 为什么要对齐
- 怎么对齐:
- 数据结构对齐
- 内存地址对齐
- 64位字的安全访问保证(32位平台)