alignof 運算元

運算子 alignof 會傳回指定型別字節的對齊方式,做為 類型的 size_t 值。

語法

alignof( type )

備註

例如:

運算式
alignof( char ) 1
alignof( short ) 2
alignof( int ) 4
alignof( long long ) 8
alignof( float ) 4
alignof( double ) 8

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));

如需修改對齊的詳細資訊,請參閱:

如需適用於 x86 和 x64 之程式碼中的對齊差異的詳細資訊,請參閱:

Microsoft 專有

alignof__alignof 是 Microsoft 編譯器中的同義字。 在 C++11 成為標準的一部分之前,Microsoft 特定 __alignof 運算子會提供這項功能。 為了達到最大可攜性,您應該使用 alignof 運算子,而不是 Microsoft 特定的 __alignof 操作員。

為了與舊版相容, _alignof 除非指定編譯器選項 /Za (停用語言延伸模組), 否則 是 的 __alignof 同義字。

另請參閱

具有一元運算子的運算式
關鍵字