Operatore di __alignof
Specifici di Microsoft
restituisce 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 (breve) |
2 |
__alignof (int) |
4 |
__alignof (__int64) |
8 |
__alignof (float) |
4 |
__alignof (double) |
8 |
__alignof (argomento char*) |
4 |
__alignof il valore è uguale al valore per sizeof per i tipi di base.Considerare, tuttavia, il seguente esempio:
typedef struct { int a; double b; } S;
// __alignof(S) == 8
in questo caso, __alignof il valore è il requisito di allineamento di più grande elemento della struttura.
Analogamente, per
typedef __declspec(align(32)) struct { int a; } S;
__alignof(S) è uguale a 32.
un utilizzo per __alignof essere passati come parametro a uno dei proprietari delle routine di allocazione della memoria.Ad esempio, data la seguente struttura definita S, è possibile chiamare una routine di allocazione della memoria denominata aligned_malloc per allocare memoria sul limite di allineamento particolare.
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 l'allineamento, vedere:
Esempi di allineamento di strutture (specifico per piattaforma x64)