Partager via


Opérateur alignof

L’opérateur alignof retourne l’alignement en octets du type spécifié en tant que valeur de type size_t.

Syntaxe

alignof( type )

Notes

Par exemple :

Expression Valeur
alignof( char ) 1
alignof( short ) 2
alignof( int ) 4
alignof( long long ) 8
alignof( float ) 4
alignof( double ) 8

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

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

Dans ce cas, la alignof valeur est l’exigence 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 alignof serait un paramètre pour l’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 :

Pour plus d'informations sur les différences d'alignement dans le code pour x86 et x64, consultez :

Spécifique à Microsoft

alignof et __alignof sont des synonymes dans le compilateur Microsoft. Avant de faire partie de la norme en C++11, l’opérateur spécifique à __alignof Microsoft a fourni cette fonctionnalité. Pour une portabilité maximale, vous devez utiliser l’opérateur alignof au lieu de l’opérateur spécifique __alignof à Microsoft.

Pour la compatibilité avec les versions précédentes, _alignof est un synonyme de __alignof, sauf si l’option du compilateur /Za (Désactiver les extensions de langage) est spécifiée.

Voir aussi

Expressions avec opérateurs unaires
Mots clés