Udostępnij za pośrednictwem


Operator __alignof

Specyficzne dla firmy Microsoft

Zwraca wartość typu size_t, czyli wymaganie wyrównania tego typu.

__alignof( 
   type  
)

Uwagi

Na przykład:

Wyrażenie

Wartość

__alignof( char )

1

__alignof( short )

2

__alignof( int )

4

__alignof( __int64 )

8

__alignof( float )

4

__alignof( double )

8

__alignof( char* )

4

Wartość __alignof jest taka sama, jak wartość sizeof dla typów podstawowych.Należy jednak wziąć pod uwagę ten przykład:

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

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

Podobnie dla

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

Wartość parametru __alignof(S) jest równa wartości obiektu 32.

Jednym z zastosowań dla __alignof może być wykorzystanie jako parametr do jednej z własnych procedur alokacji pamięci.Na przykład, biorąc pod uwagę następująco zdefiniowaną strukturę S, można wywołać procedurę alokacji pamięci o nazwie aligned_malloc, aby przydzielić pamięć 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:

Zobacz też

Informacje

Wyrażenia z operatorami jednoargumentowymi

Słowa kluczowe języka C++