프로그래머/CPP_강의정리

cpp const와 메모리 구조

미역국마싯 2021. 9. 4. 15:39

2021.08.21 - [CPP공부] - cpp 비트 연산과 비트 플래그

상수 (const)

이전글을 보면 flag 값이 계속 변경된다.

하지만 상태이상은 변하지 않는 변수이기 때문에 상수화해야 코드를 수정할 때 편하다.

즉, 한 번 정해지면 절대로 바뀌지 않는 값들을 상수화한다.

// const를 붙이면 초기값이 있어야 한다.
const int AIR = 0;
const int STUN = 1;
const int POLYMORPH = 2;
const int INVINCIBLE = 3;

 

메모리 구조

변수가 저장되는 데이터 영역의 구조

// 함수 밖은 [데이터 영역]에 저장
// .data 영역 (초기값이 있는 경우)
int a = 2;

// .bss 영역 (초기값이 없는 경우)
int b;

// .rodata 영역 (읽기 전용 데이터)
const char* msg = "Hello World";

int main()
{
	// 함수 안은 [스택 영역]에 저장
	int c = 3;
}

const는 어디 영역에 저장될까?

 

const는 정해져 있지 않다. 컴파일러가 마음대로 결정하기 때문이다.

따라서 const가 어디에 저장됐는지 보려면 직접 주소를 검색해보면 된다.

하지만 함수 내부에 작성했다면 스택 영역에 저장된다.

 

 

정리하자면, 데이터를 함수 내부에 저장했는지 외부에 저장했는지에 따라 [스택 영역]과 [데이터 영역]에 저장된다.

 

 

출처

https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard

 

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의

시리즈를 원활하게 학습하기 위한 기초적인 C++ 문법들에 대해 학습합니다. 어셈블리 언어부터 시작해서 기본 C++ 문법, STL, C++11까지 핵심적인 내용을 압축해서 다루게 됩니다., - 강의 소개 | 인

www.inflearn.com

 

'프로그래머 > CPP_강의정리' 카테고리의 다른 글

cpp switch-case 문  (0) 2021.09.05
cpp 데이터 TIP  (0) 2021.09.05
cpp 비트 연산과 비트 플래그  (0) 2021.08.21
cpp 문자와 문자열  (0) 2021.08.17
cpp 불리언과 실수  (0) 2021.08.16