Aracılığıyla paylaş


__alignof operatörü

Microsoft özel

Türünde bir değer döndürür size_t, yani hizalama gereksinimi türü.

__alignof( 
   type  
)

Notlar

Örne?in:

İfade

Value

__alignof (char)

1

__alignof (kısa)

2

__alignof (int)

4

__alignof (__int64)

8

__alignof (float)

4

__alignof (double)

8

__alignof (char *)

4

__alignof Değeri değeri ile aynı olup sizeof temel türü için. , Ancak bu örneði ele alalým:

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

Bu durumda, __alignof yapısındaki en büyük öğe hizalama gereği bir değerdir.

Benzer şekilde, için

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

__alignof(S)eşittir 32.

Kullanım için __alignof kendi bellek ayırma yordamlar için parametre olarak olacaktır. Örneğin, aşağıda yapı tanımlanan S, adlı bir bellek ayırma yordam çağrısı aligned_malloc belirli hizalama sınırına bellek ayrılamıyor.

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

Hizalamayı değiştirme hakkında daha fazla bilgi için bkz:

Ayrıca bkz.

Başvuru

Tekli operatörler ifadelerle

C++ anahtar sözcükler