Condividi tramite


Operatore __alignof

Sezione specifica Microsoft

Viene restituito un valore di tipo size_t, ovvero il requisito di allineamento del tipo.

__alignof( 
   type  
)

Note

Di seguito è riportato un esempio.

Espressione

Valore

__alignof( char )

1

__alignof( short )

2

__alignof( int )

4

__alignof( __int64 )

8

__alignof( float )

4

__alignof( double )

8

__alignof( char* )

4

Il valore __alignof è uguale al valore di sizeof per 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 valore __alignof è il requisito di allineamento dell'elemento più grande presente nella struttura.

Analogamente, per

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

__alignof(S) è uguale a 32.

Un utilizzo di __alignof sarebbe quello di parametro per una delle proprie routine di allocazione della 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 ulteriori informazioni sulla modifica dell'allineamento, vedere:

Vedere anche

Riferimenti

Espressioni con operatori unari

Parole chiave C++