Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Operador
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:
packalign__unaligned-
/Zp(Alineación de miembros de struct) - Ejemplos de alineación de estructuras x64
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).