alignof
-Operator
Der alignof
Operator gibt die Ausrichtung in Byte des angegebenen Typs als Wert des Typs size_t
zurück.
Syntax
alignof( type )
Hinweise
Beispiel:
Ausdruck | Wert |
---|---|
alignof( char ) |
1 |
alignof( short ) |
2 |
alignof( int ) |
4 |
alignof( long long ) |
8 |
alignof( float ) |
4 |
alignof( double ) |
8 |
Der alignof
Wert ist identisch mit dem Wert für sizeof
grundlegende Typen. Betrachten Sie jedoch das Beispiel:
typedef struct { int a; double b; } S;
// alignof(S) == 8
In diesem Fall ist der alignof
Wert die Ausrichtungsanforderung des größten Elements in der Struktur.
Entsprechend gilt:
typedef __declspec(align(32)) struct { int a; } S;
alignof(S)
ist gleich 32
.
Eine Verwendung wäre alignof
als Parameter für eine Ihrer eigenen Speicherzuordnungsroutinen. Beispielsweise könnten Sie angesichts der folgenden definierten Struktur S
eine Speicherbelegungsroutine mit dem Namen aligned_malloc
aufrufen, um einen bestimmten Grenzwert mit Speicher zu belegen.
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));
Weitere Informationen über das Ändern der Ausrichtung finden Sie unter:
Weitere Informationen zu den Unterschieden bei der Ausrichtung im Code für x86 und x64 finden Sie unter:
Microsoft-spezifisch
alignof
und __alignof
sind Synonyme im Microsoft-Compiler. Bevor sie Teil des Standards in C++11 wurde, stellte der microsoftspezifische __alignof
Operator diese Funktionalität bereit. Für die maximale Portabilität sollten Sie den alignof
Operator anstelle des microsoftspezifischen __alignof
Operators verwenden.
Aus Gründen der Kompatibilität mit früheren Versionen _alignof
ist ein Synonym für __alignof
die Angabe der Compileroption /Za
(Sprachenerweiterungen deaktivieren).
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Feedback senden und anzeigen für