Udostępnij za pośrednictwem


alignof Operator

Operator alignof zwraca wyrównanie w bajtach określonego typu jako wartość typu size_t.

Składnia

alignof( type )

Uwagi

Przykład:

Expression Wartość
alignof( char ) 1
alignof( short ) 2
alignof( int ) 4
alignof( long long ) 8
alignof( float ) 4
alignof( double ) 8

Wartość alignof jest taka sama jak wartość dla sizeof typów podstawowych. Rozważmy jednak następujący przykład:

typedef struct { int a; double b; } S;
// alignof(S) == 8

W tym przypadku alignof wartość jest wymaganiem wyrównania największego elementu w strukturze.

Podobnie, dla

typedef __declspec(align(32)) struct { int a; } S;

alignof(S) jest równa 32.

Jednym z nich alignof jest parametr do jednej z własnych procedur alokacji pamięci. Na przykład, biorąc pod uwagę następującą zdefiniowaną strukturę S, można wywołać procedurę alokacji pamięci o nazwie aligned_malloc w celu przydzielenia pamięci na określonej granicy wyrównania.

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));

Aby uzyskać więcej informacji na temat modyfikowania wyrównania, zobacz:

Aby uzyskać więcej informacji na temat różnic w wyrównaniu kodu dla x86 i x64, zobacz:

specyficzne dla firmy Microsoft

alignof i __alignof są synonimami w kompilatorze firmy Microsoft. Zanim stał się częścią standardu w języku C++11, operator specyficzny dla __alignof firmy Microsoft udostępnił tę funkcję. Aby uzyskać maksymalną przenośność, należy użyć alignof operatora zamiast operatora specyficznego dla firmy __alignof Microsoft.

Aby uzyskać zgodność z poprzednimi wersjami, jest synonimem, _alignof__alignof chyba że określono opcję /Za kompilatora (Wyłącz rozszerzenia języka).

Zobacz też

Wyrażenia z operatorami jednoargumentowymi
Słowa kluczowe