alignof-Operator

Der alignof Operator gibt die Ausrichtung in Byte des angegebenen Typs als Wert des Typs size_tzurü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

Ausdrücke mit unären Operatoren
Schlüsselwörter