프로그래밍 언어/C & C++ 정리

마이크로 소프트에서 사용되는 _CLRCALL_OR_CDECL

뽀또치즈맛 2025. 4. 26. 14:08

 

 

_CLRCALL_OR_CDECL 는 으래 C++에서 쓰이는 

endl을 타고 들어가면 볼 수 있는 매크로이다.

 

 

enld을 타고 들어가면 다음과 같은 코드를 볼 수 있는데,

 

 

해당 코드에서 사용되는 basic_ostream의 클래스 크기는 1바이트이다.

아마 c의 _Alignof나 C++의 alignof(T) 또는 alignas를 사용한 것 같다.

 

 

alignas의 예시

 

 

alignas를 사용하지 않고 클래스 패딩 규칙에 따른 메모리 할당 크기

 

alignas를 사용하여 메모리 할당 크기를 사용자가 임의로 지정해 준 코드

 

 

 

해당 코드 전문

class a
{
    int v[4];
};

// V의 메모리 풀 즉, 패딩을 내가 조절하는 것
// alignas를 사용하면
// V의 할당 될 메모리를 비트 단위로 내가 할당해줄 수 있는 것
class alignas(16) V { float v[4]; };

// V의 최대 메모리 풀 사이즈가 16인지?
static_assert(alignof(V) == 16, "V should be 16-byte aligned");

 

 

그냥 C++로 코딩 테스트 풀다가 재밌어서 해봤는데

적어두면 더 재밌을 거 같아서 메모삼아 적어두었다.