1. 지역, 전역, 동적
- 전역 변수는 프로그램이 시작될 때 메모리 확보
- 지역 변수는 함수가 호출될 때 메모리 확보
- 동적 변수는 new, malloc 함수를 통해 동적으로 메모리를 확보, 포인터 변수를 활용해 메모리에 접근
2. 메모리 구조 (코드, 데이터 상/하위)
- 코드 영역, 데이터 영역, 힙 영역, 스택 영역의 순으로 낮은 -> 높은 메모리 주소를 차지함
- 코드 영역 : 실행할 프로그램의 코드가 저장되는 영역, 텍스트 영역이라고도 함
- 데이터 영역 : 전역 변수, 정적(static) 변수가 저장되는 영역으로 프로그램 시작과 동시에 할당되며 프로그램의 종료와 함께 소멸
- 힙 영역 : new, malloc 키워드 등을 통해 프로그램의 실행 중에 동적으로 할당되는 메모리 공간
- 스택 영역 : 지역 변수와 매개 변수가 저장되는 공간, 함수 호출 시 할당되며 스택 프레임이 쌓이는 방식
3. static(지역, 멤버)
- 메모리의 데이터 영역에 할당되는 변수로서 선언되는 위치에 따라 다양한 의미를 가짐
- 한 번만 초기화되며 프로그램 수명 내내 지속되는 특징은 공통적임(초기화 이후 값 변경 가능)
- 지역에서의 static : 스코프 이후에도 변수가 남아 있음
- 멤버에서의 static : 같은 클래스, 다른 객체 간 값을 공유, 초기화는 주로 cpp에서 함
- 전역에서의 static : extern을 막는 키워드
4. extern
- 전역 변수에 쓰인 extern은 다른 파일의 변수를 이 파일에서 쓰겠다는 의미
- 함수에는 기본적으로 extern이 붙어있음(명시적으로 작성하지 않아도)
5. Call By Value / Address / Reference
- 매개변수로 받거나 인자를 넘기는 상황에 생기는 차이
- Call By Value : 넘어오는 값을 복사하여 새로운 변수로서 동작(다른 주소, 같은 값), 원본 변경 불가
- Call By Address : 넘어오는 값의 '주소'를 복사, 원본에 접근하여 변경 가능
- Call By Reference : Call By Address와 마찬가지로 원본에 접근, 변경 가능. 넘어온 변수의 별명을 지어 실제 그 변수를 다루는 것과 마찬가지로 다루면 됨
6. auto
- 변수의 자료형을 컴파일러가 추측하게 해주는 키워드
- 타입이 긴 지역변수에선 편리한 사용, 매개변수에서 사용할 땐 템플릿 코드와 비슷한 효과를 볼 수 있음
'C++ > 키워드 정리' 카테고리의 다른 글
키워드 정리 [6] - 함수 호출 규약 (0) | 2023.12.01 |
---|---|
키워드 정리 [5] - 동적 할당 (1) | 2023.12.01 |
키워드 정리 [4] - 구조체 (1) | 2023.12.01 |
키워드 정리 [3] - 매크로 (1) | 2023.12.01 |
키워드 정리 [2] - const (1) | 2023.12.01 |