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:

Vea también

Referencia

Expresiones con los operadores unarios

Palabras clave de C++