Поделиться через


__alignof Оператор

Только для систем Microsoft

Возвращает значение типа size_t, то требование к выравниванию типа.

__alignof( 
   type  
)

Заметки

Примеры.

Выражение

Значение

__alignof (char)

1

__alignof (short)

2

__alignof (int)

4

__alignof (__int64)

8

__alignof (float)

4

__alignof (double)

8

__alignof (char*)

4

__alignof значение совпадает со значением sizeof для основных типов.Рассмотрим, однако этот пример:

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

В этом случае __alignof значение требования к выравниванию наибольшего элемента в структуре.

Аналогично, для

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

__alignof(S) равно 32.

Используйте для одной __alignof был в качестве параметра к одной из своих процедур выделения памяти.Например, если имеется следующая указанную структуру Sможно вызвать программу выделения памяти называется aligned_malloc выделить память для указанной границы выравнивания.

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

Дополнительные сведения об изменении выравнивании см. в разделах:

См. также

Ссылки

Выражения с унарными операторами

Ключевые слова C++