__alignof Operator
Microsoft-spezifisch
Gibt einen Wert vom Typ size_tzurück, der die Ausrichtung des erforderlichen Typs ist.
__alignof(
type
)
Hinweise
Beispiele:
Ausdruck |
Wert |
---|---|
__alignof (Char) |
1 |
__alignof (unmittelbar) |
2 |
__alignof (int) |
4 |
__alignof (__int64) |
8 |
__alignof (Gleitkommawert) |
4 |
__alignof (Double) |
8 |
__alignof (char*) |
4 |
Der __alignof-Wert ist der gleiche wie der Wert für sizeof für grundlegende Typen.Berücksichtigen Sie jedoch folgende Beispiel:
typedef struct { int a; double b; } S;
// __alignof(S) == 8
In diesem Fall ist der __alignof-Wert die Anforderung Ausrichtung des größten Elements in der Struktur.
Entsprechend für
typedef __declspec(align(32)) struct { int a; } S;
__alignof(S) ist gleich 32.
Eine Verwendung für __alignof wird als Parameter in einen routinen besitzen, Familie von sein.Beispielsweise definiert die folgende Struktur S, können Sie eine Familie routine aufrufen, die aligned_malloc , die auf einer bestimmten Grenzwert Speicher belegen integralen benannt wurde.
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:
Examples of Structure Alignment (x64-spezifisch)