__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 的其中一種用法會是做為您其中一個記憶體配置常式的參數。 例如,假設有下列定義的結構 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 專用)