对齐大于 的数组的开头很有用,但这是数组对象的对齐,而不是元素类型的对齐。与 类似,允许对齐 SIMD 加载/存储 16 或 32 字节向量,这样它们就不能跨缓存线分割。Talignof(T)alignas(32) float arr[1024];
最后我检查了 GCC,如果你 typedef 一个版本的floatwith __attribute__((aligned(16))),如果你创建一个数组,每个元素占用 16 个字节,所以元素大小有效地增长,包括填充。链接的问答表明 clang 不会让您创建数组。