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

+ Recent posts