TIL - 01(프로그램 메모리 구조, enum)

jh Seo·2024년 7월 24일

프로그램 메모리 구조

    [프로그램의 메모리 구조]
    --------------------- 소스 코드 영역--------------
     ... 누군가가 작성해둔 코드가 어셈으로 기록되어 있다.
     -------------------- 데이터 영역 ----------------
     ... 전역 변수, static(정적) 변수
     --------------------- Heap 영역 ----------------
     ... 동적 할당(실행 중에 메모리 요청을 하는 것)
    
     
     (RBP + 상대주소(0)) [a] 4byte
     (RBP + 상대주소(1)) [b] 4byte
     (RBP + 상대주소(2)) [c] 4byte
     
     (함수의 변수목록의 시작주소인 RBP 기준으로 + 상대 주소)
     .....
    ---------------------- stack 영역 ------------------
    

열거형

기본적으로 4바이트 할당

타입 명시 가능

enum ETier  : unsigned  char
{
	Iron,
    Bronze,
    Silver,
    Gold
};

이런 식으로 구현시 1바이트 할당

하지만 위처럼 짜면 형변환 체크가 안됨

unsigned char MyTier = (ETier)Gold;

묵시적 형변환이 다 허용된다.

클래스형

//타입 강제 명시
enum class ETier : unsigned char
{
	Iron,
    Bronze,
    Silver,
    Gold
};

이렇게 짜게되면

unsigned char MyTier = (ETier)Gold;

이런 묵시적 형변환이 오류가 난다.

profile
코딩 창고!

0개의 댓글