[프로그램의 메모리 구조]
--------------------- 소스 코드 영역--------------
... 누군가가 작성해둔 코드가 어셈으로 기록되어 있다.
-------------------- 데이터 영역 ----------------
... 전역 변수, 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;
이런 묵시적 형변환이 오류가 난다.