__alignof-Operator
Microsoft-spezifisch
Gibt einen Wert vom Typ size_t zurück, der der Ausrichtungsanforderung des Typs entspricht.
__alignof(
type
)
Hinweise
Beispiel:
Ausdruck |
Wert |
---|---|
__alignof (char) |
1 |
__alignof (short) |
2 |
__alignof (int) |
4 |
__alignof (__int64) |
8 |
__alignof (float) |
4 |
__alignof (double) |
8 |
__alignof (char*) |
4 |
Der __alignof-Wert entspricht dem sizeof-Wert für Basistypen. 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 für __alignof wäre als Parameter für eine Ihrer Speicherbelegungsroutinen. 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:
Beispiele für die Strukturausrichtung (x64-spezifisch)