opérateur de __alignof
Spécifique à Microsoft
Retourne une valeur, du type size_t, qui est la spécification d'alignement du type.
__alignof(
type
)
Notes
Par exemple :
Expression |
Valeur |
---|---|
__alignof (char) |
1 |
__alignof (short) |
2 |
__alignof (entier) |
4 |
__alignof (__int64) |
8 |
__alignof (float) |
4 |
__alignof (double) |
8 |
__alignof (char*) |
4 |
La valeur d' __alignof est identique à la valeur pour sizeof pour les types de base.Considérez, toutefois, cet exemple :
typedef struct { int a; double b; } S;
// __alignof(S) == 8
Dans ce cas, la valeur d' __alignof est la spécification d'alignement du plus grand élément de la structure.
de même, pour
typedef __declspec(align(32)) struct { int a; } S;
__alignof(S) est égal à 32.
Une utilisation de __alignof serait comme paramètre à l'une de vos propres routines d'allocation de mémoire.Par exemple, dans la structure définie suivante S, vous pouvez appeler une routine d'allocation de mémoire nommée aligned_malloc pour allouer de la mémoire sur une limite d'alignement particulière.
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));
Pour plus d'informations sur modifier l'alignement, consultez :
Examples of Structure Alignment (spécifique à x64)