Udostępnij za pośrednictwem


operator __alignof

Programu Microsoft

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

__alignof( 
   type  
)

Uwagi

Na przykład:

Wyrażenie

Wartość

__alignof (char)

1

__alignof (krótkiej)

2

__alignof (int)

4

__alignof (__int64)

8

__alignof (float)

4

__alignof (double)

8

__alignof (char *)

4

__alignof Wartość jest taka sama jak wartość dla sizeof dla typów podstawowych.Jednakże, rozważmy następujący przykład:

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

W tym przypadku __alignof wartość jest wymóg wyrównanie największego elementu w strukturze.

Podobnie dla

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

__alignof(S)jest równe 32.

Jednym z zastosowań __alignof byłoby jako parametr do jednego z własnych procedur alokacji pamięci.Na przykład, biorąc pod uwagę następujące zdefiniowane struktury S, może wywołać rutynowych alokacji pamięci, o nazwie aligned_malloc do przydzielania pamięci, w szczególności cylindra.

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 dotyczących modyfikowania wyrównania zobacz:

Zobacz też

Informacje

Wyrażenia z operatory jednoargumentowe

Słów kluczowych języka C++