__alignof 演算子
Microsoft 固有の仕様 →
値を型のアライメント要件である型の size_t 返します。
__alignof(
type
)
解説
次に例を示します。
式 |
値 |
---|---|
__alignof (文字) |
1 |
__alignof (Short) |
2 |
__alignof (int) |
4 |
__alignof (__int64) |
8 |
__alignof (浮動) |
4 |
__alignof (Double) |
8 |
__alignof (*) |
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 固有)