__alignof 演算子
Microsoft 固有の仕様 →
型の配置要件である size_t 型の値を返します。
__alignof(
type
)
解説
次に例を示します。
式 |
値 |
---|---|
__alignof( char ) |
1 |
__alignof( short ) |
2 |
__alignof( int ) |
4 |
__alignof( __int64 ) |
8 |
__alignof( float ) |
4 |
__alignof( double ) |
8 |
__alignof( char* ) |
4 |
__alignof 値は、基本型の sizeof 値と同じです。 ただし、次の例を検討します。
typedef struct { int a; double b; } S;
// __alignof(S) == 8
この場合、__alignof 値は、構造体内の最大要素の配置要件です。
同様に、
typedef __declspec(align(32)) struct { int a; } S;
__alignof(S) と 32 が等価です。
__alignof の使用方法の 1 つは、独自のメモリ割り当てルーチンの 1 つへのパラメーターとしての使用です。 たとえば、次の定義済みの構造体 S を指定して、aligned_malloc という名前のメモリ割り当てルーチンを呼び出し、特定の配置境界にメモリを割り当てることができます。
typedef __declspec(align(32)) struct { int a; double b; } S;
int n = 50; // array size
S* p = (S*)aligned_malloc(n * sizeof(S), __alignof(S));
配置の変更の詳細については、次を参照してください。
構造体の配置例 (x64 固有)