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:
Przykłady struktury wyrównanie(określonych x 64)