Compartir a través de


Operador alignof

El operador alignof devuelve la alineación en bytes del tipo especificado como un valor de tipo size_t.

Sintaxis

alignof( type )

Comentarios

Por ejemplo:

Expression Valor
alignof( char ) 1
alignof( short ) 2
alignof( int ) 4
alignof( long long ) 8
alignof( float ) 4
alignof( double ) 8

El valor 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 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:

Para obtener más información sobre las diferencias de la alineación en código para x86 y x64, vea:

Específico de Microsoft

alignof y __alignof son sinónimos en el compilador de Microsoft. Antes de que se convirtiera en parte del estándar en C++11, el operador __alignof específico de Microsoft ofrecía esta funcionalidad. Para la máxima portabilidad, use el operador alignof en lugar del operador __alignof específico de Microsoft.

A efectos de compatibilidad con versiones anteriores, _alignof es un sinónimo de __alignof a menos que se especifique la opción del compilador /Za (Deshabilitar extensiones de lenguaje).

Consulte también

Expresiones con operadores unarios
Palabras clave