__alignof operátora
Konkrétní společnosti Microsoft
Vrátí hodnotu typu size_t, je požadavek zarovnání typu.
__alignof(
type
)
Poznámky
Příklad:
Výraz |
Value |
---|---|
__alignof (char) |
1 |
__alignof (krátké) |
2 |
__alignof (int) |
4 |
__alignof (__int64) |
8 |
__alignof (plovoucí) |
4 |
__alignof (double) |
8 |
__alignof (char *) |
4 |
__alignof Hodnota je stejná jako hodnota pro sizeof pro základní typy.Zvažte však tento příklad:
typedef struct { int a; double b; } S;
// __alignof(S) == 8
V tomto případě __alignof hodnota je požadavek zarovnání největšího prvku ve struktuře.
Podobně pro
typedef __declspec(align(32)) struct { int a; } S;
__alignof(S)je rovno 32.
Pro jedno použití __alignof by bylo jako parametr pro jednu vlastní rutiny přidělení paměti.Například dané následující definice struktury S, nelze volat rutina přidělení paměti s názvem aligned_malloc přidělení paměti na hranici zejména zarovnání.
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));
Další informace o úpravách zarovnání v následujících tématech:
Příklady zarovnání struktur(konkrétní x 64)