__alignof 연산자
Microsoft 전용
형식의 맞춤 요구 사항인 size_t 형식의 값을 반환합니다.
__alignof(
type
)
설명
예를 들면 다음과 같습니다.
식 |
값 |
---|---|
__alignof( char ) |
1 |
__alignof( short ) |
2 |
__alignof( int ) |
4 |
__alignof( __int64 ) |
8 |
__alignof( float ) |
4 |
__alignof( double ) |
8 |
__alignof( char* ) |
4 |
__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));
맞춤 수정에 대한 자세한 내용은 다음을 참조하십시오.
구조체 맞춤 예제(x64용)