[英]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.