alignof 연산자alignof Operator

alignof 연산자는 지정 된 형식의 맞춤 (바이트)을 형식의 값으로 반환 합니다 size_t .The alignof operator returns the alignment in bytes of the specified type as a value of type size_t.


alignof( type )


예를 들어:For example:

Expression Value
alignof( char ) 11
alignof( short ) 22
alignof( int ) 44
alignof( long long ) 88
alignof( float ) 44
alignof( double ) 88

alignof 값은 기본 형식의의 값과 동일 합니다 sizeof .The alignof value is the same as the value for sizeof for basic types. 그러나 다음과 같은 예제를 고려해야 합니다.Consider, however, this example:

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

이 경우 alignof 값은 구조체에서 가장 큰 요소의 맞춤 요구 사항입니다.In this case, the alignof value is the alignment requirement of the largest element in the structure.

마찬가지로Similarly, for

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

alignof(S)이(가) 32와 같은 경우.alignof(S) is equal to 32.

에서 사용 하는 한 가지 용도는 alignof 사용자 고유의 메모리 할당 루틴 중 하나에 대 한 매개 변수입니다.One use for alignof would be as a parameter to one of your own memory-allocation routines. 예를 들어, 다음의 정의된 구조인 S가 지정된 경우 aligned_malloc이라는 메모리 할당 루틴을 호출하여 특정한 할당 경계에서 메모리를 할당할 수 있습니다.For example, given the following defined structure S, you could call a memory-allocation routine named aligned_malloc to allocate memory on a particular alignment boundary.

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));

맞춤 수정에 대한 자세한 내용은 다음을 참조하세요.For more information on modifying alignment, see:

X86 및 x64 관련 코드에서 맞춤의 차이점에 대한 자세한 내용은 다음을 참조하세요.For more information on differences in alignment in code for x86 and x64, see:

Microsoft 전용Microsoft-specific

alignof__alignof 는 Microsoft 컴파일러의 동의어입니다.alignof and __alignof are synonyms in the Microsoft compiler. C + + 11에서는 표준의 일부가 되기 전에 Microsoft 전용 __alignof 운영자가이 기능을 제공 했습니다.Before it became part of the standard in C++11, the Microsoft-specific __alignof operator provided this functionality. 이식성을 최대화 하려면 alignof Microsoft 전용 연산자 대신 연산자를 사용 해야 합니다 __alignof .For maximum portability, you should use the alignof operator instead of the Microsoft-specific __alignof operator.

이전 버전과의 호환성을 위해 _alignof__alignof 컴파일러 옵션 /Za ( 언어 확장 사용 안 함 을 지정 하지 않는 경우의 동의어입니다.For compatibility with previous versions, _alignof is a synonym for __alignof unless compiler option /Za (Disable language extensions) is specified.

참조See also

단항 연산자가 있는 식Expressions with Unary Operators