강의

멘토링

로드맵

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

가나파이님의 프로필 이미지
가나파이

작성한 질문수

홍정모의 따라하며 배우는 C++

4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결

46분경 전역 상수 설명에서 메모리 주소에 대해 질문드립니다

작성

·

186

1

MyConstants에서 extern을 뺐을 때 main.cpp와 test.cpp에서 Constants::pi 의 주소가 다른 것은 이해가 됩니다. 근데 MyConstants에서 extern 대신에 static을 썼을 때는 프로그램 실행 시 최초에 한 번만 메모리 할당을 받기 때문에 그 주소가 같을 것이라 기대를 하였지만 다르게 나옵니다. 그 이유가 무엇일까요?

답변 1

1

안녕하세요? 질문&답변 도우미 Soobak 입니다.

 

extern 키워드와 static 키워드로 한정된 변수가 '보이는' 범위가 다르기 때문입니다.

 

static 키워드는 '파일' 수준에서 해당 변수를 제한합니다.

따라서, 동일한 변수명이라고 하더라도 각 파일마다 독립적인 복사본이 생성되며, 각기 다른 메모리 주소를 가지게 됩니다.

가나파이님의 프로필 이미지
가나파이

작성한 질문수

질문하기