__alignof 運算子
Microsoft 專有的
傳回型別的值 size_t,也就是型別對齊需求。
__alignof(
type
)
備註
例如:
運算式 |
值 |
---|---|
__alignof (字元) |
1 |
__alignof (簡短) |
2 |
__alignof (int) |
4 |
__alignof (__int64) |
8 |
__alignof (浮點數) |
4 |
__alignof (雙重) |
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會為您自己的記憶體配置常式的其中一個參數。 例如,給定下列定義結構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 專用)