Share via


__alignof (Operador)

Específicos de Microsoft

Devuelve un valor, de tipo size_t, que es el requisito de alineación del 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( double )

8

__alignof( char* )

4

El valor de __alignof es igual que el valor de sizeof para los tipos básicos. Considere, no obstante, 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 parámetro para una de sus propias rutinas de asignación de memoria. Por ejemplo, dada la siguiente estructura definida 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 modificación de la alineación, vea:

Vea también

Referencia

Expresiones con operadores unarios

Palabras clave de C++