🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

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

21.12.28 10:13 작성 조회수 749

0

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

 

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

 

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

 

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

답변 1

답변을 작성해보세요.

1

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

채널톡 아이콘