Operador de __alignof
Específicos de Microsoft
Devuelve un valor, de size_tescrito, que es el requisito de alineación de tipo.
__alignof(
type
)
Comentarios
Por ejemplo:
Expresión |
Valor |
---|---|
__alignof (char) |
1 |
__alignof (short) |
2 |
__alignof (int) |
4 |
__alignof (__int64) |
8 |
__alignof (float) |
4 |
__alignof (doble) |
8 |
__alignof (char*) |
4 |
El valor de __alignof es igual que el valor para sizeof para los tipos básicos.Observe, sin embargo, este ejemplo:
typedef struct { int a; double b; } S;
// __alignof(S) == 8
En este caso, el valor de __alignof es el requisito de alineación del elemento más grande de la estructura.
De igual forma, para
typedef __declspec(align(32)) struct { int a; } S;
__alignof(S) es igual a 32.
Un uso para __alignof sería como un parámetro a uno de poseer las rutinas de asignación de memoria.Por ejemplo, dada la estructura definida siguiente S, podría llamar a una rutina de asignación de memoria denominada aligned_malloc para asignar memoria en un límite de alineación determinado.
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 obtener más información sobre la alineación de modificación, vea:
Ejemplos de alineación de estructuras (específico de x64)