alignof and alignas (C++)
The latest version of this topic can be found at alignof and alignas (C++).
The alignas
type specifier is a portable, C++ standard way to specify custom alignment of variables and user defined types. The alignof
operator is likewise a standard, portable way to obtain the alignment of a specified type or variable.
Example
You can use alignas
on a class, struck or union, or on individual members. When multiple alignas
specifiers are encountered, the compiler will choose the strictest one, (the one with the largest value).
struct alignas(16) Bar
{
int i; // 4 bytes
int n; // 4 bytes
alignas(4) char arr[3];
short s; // 2 bytes
};
…
cout << alignof(Bar) << endl; // output: 16