본문 바로가기
공부/C++

변수의 선언과 초기화 & 메모리 할당 과정

by 떈구 2025. 3. 5.

변수의 선언과 초기화

//변수의 초기화
int num = 5;
자료형 변수명 연산자 리터럴값  세미콜론


변수의 선언
int num;

 자료형 (int, float, double, long long 등)과 변수명을 지정하면 변수를 선언할 수 있다.

  • 변수 선언과 동시에 값을 할당하면 초기화라고 한다.
  • int num = 5; → int형 변수 num에 5를 저장한다.
  • 초기화하지 않으면 변수에는 **쓰레기 값(Garbage Value)**이 들어갈 수도 있다.

 

코드 실행과 메모리 이동

C++ 프로그램이 실행되면 코드와 변수가 메모리(RAM)에 로드된다.

  • 프로그램 실행 시 코드가 하드디스크에서 RAM으로 이동한다.
  • 코드 영역에서 어셈블리 언어로 변환 후 스택(Stack) 영역으로 이동한다.
  • 프로그램이 실행되면서 변수들이 스택 또는 힙 영역에 저장된다.

 

✅ 실행 과정  

1. 프로그램 실행 시 코드가 하드디스크에서 RAM으로 로드됨

  • 실행 파일(EXE)이 하드디스크에서 RAM(메모리)으로 올라간다.

2. 코드 영역(Code Section)에 프로그램 코드(어셈블리 명령어)가 저장됨

  • C++ 코드는 컴파일 후 어셈블리어로 변환되며, 실행될 준비가 된다.
  • 코드 영역은 읽기 전용(Read-Only)으로 유지된다.

3. 프로그램 실행 중 변수는 각각의 메모리 영역에 저장됨

  • 전역 변수, static 변수 → 데이터(Data) 영역에 저장
  • 지역 변수, 함수 호출 정보 → 스택(Stack) 영역에 저장
  • 동적 할당된 변수 → 힙(Heap) 영역에 저장

 

 

메모리 구조와 변수 저장

C++ 실행 시 메모리 영역

 

  • 스택 영역은 함수 호출 시 지역 변수를 저장하는 공간이다.
  • 스택은 LIFO(Last In, First Out) 구조로 동작하며,
    메모리의 높은 주소에서 낮은 주소 방향으로 쌓인다. ( 스택영역은 끝에서 부터 채워져 올라감 )
  • 스택에 할당된 변수는 해당 함수가 종료되면 자동으로 해제된다.

 

그리고 스택영역에 할당된 공간은 주소가 되며, 이를 '포인터' 라고 할 수 있다.

포인터는 할당된 공간(변수의 주소)를 가르킨다 라는것이다.

램의 최상단에는 운영체제가 있다.

 

 

 

✅ 요약 

  1. 코드 실행 시 프로그램은 RAM으로 로드된다.
  2. 코드 영역에 어셈블리어로 변환된 명령어가 저장된다.
  3. 변수는 데이터/스택/힙 영역에 각각 저장된다.
  4. 스택은 LIFO 구조로 동작하며, 함수가 끝나면 자동 해제된다.
  5. 포인터는 메모리 주소를 저장하고, 해당 공간을 가리키는 역할을 한다.

'공부 > C++' 카테고리의 다른 글

C++ Class  (0) 2025.03.07
C++ 포인터와 레퍼런스  (0) 2025.03.07
C++ 함수에 대한 이해와 메모리 구조  (0) 2025.03.07
기본 - C++ 프로그램의 메모리 구조  (0) 2025.03.05
기본 - 컴파일러  (0) 2025.03.05