C++

C++ 전역 변수, 지역변수

FFA 2021. 8. 5. 14:10
728x90

// 전역변수와 지역변수 (global varialbe / local variable)

1. 전역변수

1) 함수 바깥에 선언한다.

2) 특정한 함수 내부에서 선언된 것이 아니므로

어디에 속하지 않고 해당 소스 파일 전체가 공유한다.

3) 프로그램이 실행 중일 때 메모리를 계속 점유중이며,

이는 프로그램이 종료될 때 비로소 소멸한다.

4) 한 번 정해진 메모리 위치에 계속 남아있어야 하므로

*정적(static) 데이터 영역에 생성된다.

5) 별도의 초기식이 없어도 0으로 초기화된다.

프로그램 전체에 걸쳐서 사용되기 때문에

초기값을 지정하지 않아도 안전을 위해

쓰레기값이 아닌 0으로 초기화한다.

* 정적(static) 데이터 영역

: 프로그램의 코드 바로 다음에 위치하는 실행 파일의 한 부분이며,

프로그램이 실행될 때 메모리로 로드되어 계속 유지되는 영역

2. 지역변수

1) 함수 내부에서 선언한다.

2) 자신이 선언된 함수에 소속되어 있기 때문에

함수 외부에서는 이 변수를 읽지도, 쓰지도 못한다.

3) 특정 함수 내부에서만 사용되기 때문에 함수가 실행

중일 때만 메모리를 차지한며, 함수 호출이 종료되면

지역변수의 생명도 끝이다.

4) 프로그램 실행 중에 생성과 소멸을 계속 반복한다.

스택(stack) 영역에 생성되는데, 스택은 일종의 데이터

임시 저장소다.

5) 별도의 초기식이 없을 경우 초기화가 이루어지지 않는다.

무슨 값을 가지게 될지 알 수 없는데,

이때 초기화되지 않은 변수값을 쓰레기값이라고 한다.

728x90