Member Layout
对齐
在 C++ 中,可以指定类的对齐方式,原因可能是使用 SIMD(Single Instruction, Multiple Data)指令集或者需要特殊的内存布局。比如下面的示例用 alignas 指定按 16 字节对齐。
Vec 对象如何创建,它的地址都会按 16 字节对齐,也就是说地址模 16 的余数为 0。
- 栈内存:编译器保证
Vec v对象的地址按照 16 字节对齐。 - 堆内存:通过
new Vec分配的对象,operator new会保证返回的内存地址按照 16 字节对齐。 - 全局或静态变量:链接器/加载器会保证这些对象的地址按照 16 字节对齐。