gpt4 book ai didi

C++:是否有理由为类型设置alignof > sizeof

转载 作者:行者123 更新时间:2023-12-03 07:52:26 25 4
gpt4 key购买 nike

this question中所示,对齐方式可能大于类型的大小,只是不能创建它的数组。但是,您可以创建一个 char[alignof(T)] 数组和reinterpret_cast 来在其中插入元素。

所以问题就变成了,在某些情况下,alignof(T) > sizeof(T) 会有用吗?我唯一能想到的就是与 SIMD 边界对齐。

最佳答案

T数组开头对齐比 alignof(T) 更有用,但这是数组对象的对齐方式,不是元素类型。与 alignas(32) float arr[1024]; 类似,允许使用 16 或 32 字节 vector 进行对齐的 SIMD 加载/存储,这样它们就无法跨缓存行拆分。

最后我检查了 GCC,如果您使用 __attribute__((aligned(16))) 输入定义 float 的版本,则每个元素占用 16 个字节(如果您创建数组,因此元素大小有效增长,包括填充。链接的问答表明 clang 不会让您创建数组。

关于C++:是否有理由为类型设置alignof > sizeof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76848873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com