Sdílet prostřednictvím


__alignof – operátor

Specifické pro Microsoft

Vrátí hodnotu typu size_t, to znamená požadavek zarovnání typu.

__alignof( 
   type  
)

Poznámky

Příklad:

Výraz

Value

__alignof( char )

1

__alignof( short )

2

__alignof( int )

4

__alignof( __int64 )

8

__alignof( float )

4

__alignof( double )

8

__alignof( char* )

4

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

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

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

Podobně pro

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

__alignof(S) se rovná 32.

Jedno použití __alignof je jako parametr pro jednu z vlastních rutin přidělení 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:

Viz také

Referenční dokumentace

Výrazy s unárními operátory

Klíčová slova jazyka C++