인프런 커뮤니티 질문&답변

사빈님의 프로필 이미지
사빈

작성한 질문수

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

const와 메모리 구조

const가 메모리에 할당되지 않는다는게

작성

·

901

0

const를 지역변수로 선언하면 stack영역에 할당된다는건 이해했습니다.

 

근데 전역변수로 사용할 경우에는 메모리가 어디에 할당될지는 컴파일러의 마음이라고 설명해주시고 메모리에 할당되지 않았다는걸 보여주셨는데 이게 궁금해서 인터넷에 찾아보니 다들 전역const에 경우에는 .rodata에 메모리가 할당된다고 설명을 하더라구요...

 

#define의 경우에는 메모리를 쓰지않는다고하고...

 

약간좀 혼란이오는데 메모리에 할당될지 말지는 랜덤이라는게 맞는 말인가요?

답변 1

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

#define은 메모리를 쓰지 않는 것이 100% 맞지만 (전처리기 문법이기 때문)
const의 경우 딱히 어떻게 해야 한다! 고 표준에 명시되어 있진 않습니다.
따라서 대부분 read only data 영역에 잡히긴 하지만
경우에 따라 컴파일러가 아예 상수로 치환할 수도 있습니다.
사실 이 부분은 어느 쪽이라도 최종 결과가 같고
성능에 큰 차이가 없으므로 크게 중요하지 않습니다.

사빈님의 프로필 이미지
사빈

작성한 질문수

질문하기