Sdílet prostřednictvím


alignof Operátor

Operátor alignof vrátí zarovnání v bajtech zadaného typu jako hodnotu typu size_t.

Syntaxe

alignof( type )

Poznámky

Příklad:

Expression Hodnota
alignof( char ) 1
alignof( short ) 2
alignof( int ) 4
alignof( long long ) 8
alignof( float ) 4
alignof( double ) 8

Hodnota alignof je stejná jako hodnota pro sizeof základní typy. Uvažme však tento příklad:

typedef struct { int a; double b; } S;
// alignof(S) == 8

V tomto případě alignof je hodnota požadavkem zarovnání největšího prvku ve struktuře.

Podobně pro

typedef __declspec(align(32)) struct { int a; } S;

alignof(S) je rovno 32.

Jedno použití alignof by bylo jako parametr pro jednu z vašich vlastních rutin přidělování paměti. Například s ohledem na následující definovanou strukturu S lze volat rutinu přidělení paměti s názvem aligned_malloc pro přidělení paměti na hranici určitého zarovnání.

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

Další informace o úpravách zarovnání naleznete v:

Další informace o rozdílech v zarovnání v kódu pro x86 a x64 najdete v tématech:

specifické pro společnost Microsoft

alignof a __alignof jsou synonymy v kompilátoru Microsoftu. Než se stal součástí standardu v jazyce C++11, operátor specifický pro __alignof Microsoft tuto funkci poskytl. Pro maximální přenositelnost byste měli místo operátora specifického pro __alignof Microsoft použít alignof operátor.

Kvůli kompatibilitě s předchozími verzemi _alignof je synonymem, pokud __alignof není zadána možnost /Za kompilátoru (Zakázat jazyková rozšíření ).

Viz také

Výrazy s unárními operátory
Klíčová slova