__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));
Дополнительные сведения об изменении выравнивании см. в разделах:
Примеры выравнивания структуры (только для x64)