_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++로 코딩 테스트 풀다가 재밌어서 해봤는데
적어두면 더 재밌을 거 같아서 메모삼아 적어두었다.
'프로그래밍 언어 > C & C++ 정리' 카테고리의 다른 글
Static 링크 :외부 링크와 내부 링크 (0) | 2025.04.30 |
---|---|
순수 가상 메서드와 추상 베이스 클래스 (0) | 2025.04.18 |
virtual 키워드 메서드 (0) | 2025.04.16 |
상속을 이용한 클래스 구현 (0) | 2025.04.14 |
람다 함수들 (1) | 2025.04.12 |