operador de __alignof
Específicos do Microsoft
Retorna um valor, do tipo size_t, isto é o requisito de alinhamento do tipo.
__alignof(
type
)
Comentários
Por exemplo:
Expression |
Valor |
---|---|
__alignof (char) |
1 |
__alignof (abreviada) |
2 |
__alignof (int) |
4 |
__alignof (_ _ Int64) |
8 |
__alignof (float) |
4 |
__alignof (duplo) |
8 |
__alignof (char *) |
4 |
O __alignof valor é o mesmo que o valor de sizeof para tipos básicos.Considere, no entanto, este exemplo:
typedef struct { int a; double b; } S;
// __alignof(S) == 8
Nesse caso, o __alignof valor é o requisito de alinhamento do elemento maior na estrutura.
Da mesma forma, para
typedef __declspec(align(32)) struct { int a; } S;
__alignof(S)é igual a 32.
Um uso __alignof seria como um parâmetro para uma das suas próprias rotinas de alocação de memória.Por exemplo, considerando o seguinte definido estrutura S, você poderia chamar uma rotina de alocação de memória chamada aligned_malloc ao alocar memória em um limite determinado de alinhamento.
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));
Para obter mais informações sobre a modificação de alinhamento, consulte:
Exemplos de alinhamento estrutura(x64 específicos)