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
同義字。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將推出:在 2024 年,我們將隨著內容的意見反應機制逐步淘汰 GitHub 問題,並以新的意見反應系統來取代。 如需詳細資訊,請參閱提交並檢視相關的意見反應