【问题标题】:What are the alignas and alignof keywords used for?alignas 和 alignof 关键字的用途是什么?
【发布时间】:2011-10-26 13:27:57
【问题描述】:

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

据我了解,如果内存地址可以被 n 整除,则它与 n 个字节对齐,也就是说,可以通过一次计算“n”个字节来得到它(从 0 开始?或某个默认值?) .此外,alignas 关键字在变量声明的前缀时,指定存储变量的地址如何对齐,alignof 返回变量的地址如何对齐。

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

【问题讨论】:

    标签: c++11 alignment


    【解决方案1】:

    某些特殊类型必须以比平时更多的字节对齐 - 例如,矩阵必须在 x86 上以 16 字节对齐,以便最有效地复制到 GPU。 SSE 向量类型也可以采用这种方式。因此,如果你想创建一个容器类型,那么你必须知道你试图包含或分配的类型的对齐要求。

    【讨论】:

    • 那么关键字在某些情况下只是为了提高效率?
    • @Keand64:在许多平台和情况下,不正确的对齐是错误的。 x86 更宽容。在一般情况下,您必须遵守 UDT 所需的对齐方式。
    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2011-01-21
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    相关资源
    最近更新 更多