繁体   English   中英

我不明白在下面的代码中将char buffer []与X类型的对象对齐的原因

[英]I don't understand the reason for the alignment of the char buffer[] with an object of type X in the code below

第151页的新书中的Stroustrup显示了以下使用类型说明符alignas

有时,我们必须在声明中使用对齐,其中不允许使用诸如alignof(x + y)之类的表达式。 相反,我们可以使用类型说明符alignas:alignas(T)表示“就像T一样对齐” 例如,我们可以为某些类型X预留未初始化的存储,如下所示:

void user(const vector<X>& vx)
{
    constexpr int bufmax = 1024;
    alignas(X) char buffer[bufmax];    // unitialized
    const int max = min(vx.size(), bufmax/sizeof(X));
    unitialized_copy(vx.begin(), vx.begin() + max, buffer);
    ...
}

缓冲区是char类型,因此将对齐char但他实际上想要将X存储在其中, X可能需要与char不同的对齐,因此alignas说明符允许他确保它正确对齐X对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM