我无法理解alignas
和alignof
关键字的用途是什么,而且我不太确定我完全理解对齐方式。
根据我的理解,如果内存地址可以被n整除,那么它可以与n个字节对齐,也就是说,它可以通过一次计数'n'个字节来获得(从0?或某个默认值?) 。此外,alignas
关键字在为变量声明添加前缀时,指定如何对齐存储变量的地址,alignof
返回变量地址的对齐方式。
但是,我不相信这是对齐或alignof
/ alignas
关键字的正确理解 - 请在我出错的任何一点上纠正我。我也看不出这些关键字的用途,所以如果有人能指出他们的目的是什么,我将不胜感激。
答案 0 :(得分:8)
某些特殊类型必须以比平时更多的字节对齐 - 例如,矩阵必须在x86上以16字节对齐,以便最有效地复制到GPU。 SSE矢量类型也可以这样做。因此,如果要创建容器类型,则必须知道要尝试包含或分配的类型的对齐要求。