有哪些alignas和alignof关键字用于?

时间:2011-08-13 20:50:38

标签: c++11 alignment

我无法理解alignasalignof关键字的用途是什么,而且我不太确定我完全理解对齐方式。

根据我的理解,如果内存地址可以被n整除,那么它可以与n个字节对齐,也就是说,它可以通过一次计数'n'个字节来获得(从0?或某个默认值?) 。此外,alignas关键字在为变量声明添加前缀时,指定如何对齐存储变量的地址,alignof返回变量地址的对齐方式。

但是,我不相信这是对齐或alignof / alignas关键字的正确理解 - 请在我出错的任何一点上纠正我。我也看不出这些关键字的用途,所以如果有人能指出他们的目的是什么,我将不胜感激。

1 个答案:

答案 0 :(得分:8)

某些特殊类型必须以比平时更多的字节对齐 - 例如,矩阵必须在x86上以16字节对齐,以便最有效地复制到GPU。 SSE矢量类型也可以这样做。因此,如果要创建容器类型,则必须知道要尝试包含或分配的类型的对齐要求。