alignof
연산자
연산자는 alignof
지정된 형식의 맞춤을 형식의 size_t
값으로 바이트 단위로 반환합니다.
구문
alignof( type )
설명
예시:
식 | 값 |
---|---|
alignof( char ) |
1 |
alignof( short ) |
2 |
alignof( int ) |
4 |
alignof( long long ) |
8 |
alignof( float ) |
4 |
alignof( double ) |
8 |
alignof
값은 기본 형식의 값 sizeof
과 동일합니다. 그러나 다음과 같은 예제를 고려해야 합니다.
typedef struct { int a; double b; } S;
// alignof(S) == 8
이 경우 값은 alignof
구조에서 가장 큰 요소의 맞춤 요구 사항입니다.
마찬가지로
typedef __declspec(align(32)) struct { int a; } S;
alignof(S)
이(가) 32
와 같은 경우.
한 가지 용도는 사용자 고유의 메모리 할당 루틴 중 하나에 대한 alignof
매개 변수로 사용할 수 있습니다. 예를 들어, 다음의 정의된 구조인 S
가 지정된 경우 aligned_malloc
이라는 메모리 할당 루틴을 호출하여 특정한 할당 경계에서 메모리를 할당할 수 있습니다.
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));
맞춤 수정에 대한 자세한 내용은 다음을 참조하세요.
X86 및 x64 관련 코드에서 맞춤의 차이점에 대한 자세한 내용은 다음을 참조하세요.
Microsoft 전용
alignof
__alignof
은 Microsoft 컴파일러의 동의어입니다. C++11 표준의 일부가 되기 전에 Microsoft 관련 __alignof
운영자가 이 기능을 제공했습니다. 최대 이식성을 위해 Microsoft 관련 __alignof
연산자 alignof
대신 연산자를 사용해야 합니다.
이전 버전 _alignof
과의 호환성을 위해 __alignof
컴파일러 옵션 /Za
(언어 확장 사용 안 함) 을 지정하지 않는 한 동의어입니다.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기