alignof Operatore

L'operatore alignof restituisce l'allineamento in byte del tipo specificato come valore di tipo size_t.

Sintassi

alignof( type )

Osservazioni:

Ad esempio:

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

Il alignof valore è uguale al valore per per sizeof i tipi di base. Si consideri, in ogni caso, il seguente esempio:

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

In questo caso, il alignof valore è il requisito di allineamento dell'elemento più grande nella struttura.

Analogamente, per

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

alignof(S) è uguale a 32.

Un uso per alignof sarebbe come parametro per una delle proprie routine di allocazione di memoria. Ad esempio, data la seguente struttura definita S, si potrebbe chiamare una routine di allocazione della memoria denominata aligned_malloc per allocare memoria su un particolare limite di allineamento.

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

Per altre informazioni sulla modifica dell'allineamento, vedere:

Per altre informazioni sulle differenze nell'allineamento nel codice per x86 e x64, vedere:

Specifico di Microsoft

alignof e __alignof sono sinonimi nel compilatore Microsoft. Prima di diventare parte dello standard in C++11, l'operatore specifico di __alignof Microsoft ha fornito questa funzionalità. Per garantire la portabilità massima, è consigliabile usare l'operatore alignof anziché l'operatore specifico __alignof di Microsoft.

Per la compatibilità con le versioni precedenti, _alignof è un sinonimo di __alignof a meno che non sia specificata l'opzione /Za del compilatore (Disabilita estensioni del linguaggio).

Vedi anche

Espressioni con operatori unari
Parole chiave