Partilhar via


Operador __alignof

Específico da Microsoft

Retorna um valor, do tipo size_t, que é o requisito de alinhamento do tipo.

__alignof( 
   type  
)

Comentários

Por exemplo:

Expressão

Valor

__alignof( char )

1

__alignof( short )

2

__alignof( int )

4

__alignof( __int64 )

8

__alignof( float )

4

__alignof( double )

8

__alignof( char* )

4

O valor de __alignof é igual ao valor de sizeof para tipos básicos. Considere, no entanto, este exemplo:

typedef struct { int a; double b; } S;
// __alignof(S) == 8

Nesse caso, o valor de __alignof é o requisito de alinhamento do maior elemento na estrutura.

De maneira semelhante, para

typedef __declspec(align(32)) struct { int a; } S;

__alignof(S) é igual a 32.

Um uso de __alignof seria como um parâmetro para uma ou mais de suas próprias rotinas de alocação de memória. Por exemplo, dada a seguinte estrutura definida S, você poderia chamar uma rotina de alocação de memória de nome aligned_malloc para alocar memória em um limite de alinhamento específico.

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 obter mais informações sobre como modificar o alinhamento, consulte:

Consulte também

Referência

Expressões com operadores unários

Palavras-chave C++