Share via


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 :

Voir aussi

Référence

Expressions avec des opérateurs unaires

Mots clés C++