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 | Value |
---|---|
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 S
suivante, 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 :
pack
align
__unaligned
/Zp
(Alignement des membres de struct)- Exemples d’alignement de structure x64
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
l’option /Za
du compilateur (Désactiver les extensions de langage) spécifiée.
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour