Partager via


__alignof, opérateur

Section spécifique à Microsoft

Retourne une valeur, de 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( int )

4

__alignof ( __int64 )

8

__alignof ( float )

4

__alignof ( double )

8

__alignof( char* )

4

La valeur de __alignof est identique à la valeur de sizeof pour les types de base. Observons toutefois l'exemple suivant :

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

Dans ce cas, la valeur de __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.

__alignof peut par exemple servir de paramètre à une de vos propres routines d'allocation de mémoire. Par exemple, dans la structure définie Ssuivante, vous pouvez appeler une routine d'allocation de mémoire nommée aligned_malloc pour allouer 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 la modification de l'alignement, consultez :

Voir aussi

Référence

Expressions avec opérateurs unaires

Mots clés C++