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

기본 - C++ 프로그램의 메모리 구조

by 떈구 2025. 3. 5.

C++ 프로그램이 실행될 때, 메모리는 여러 영역으로 나뉘며, 각각의 역할이 다르다.

메모리 영역을 제대로 이해하면 변수의 수명과 동작 방식을 더 잘 파악할 수 있다.

 

 

 

코드(Code) 영역

역할:

  • 실행할 **프로그램의 기계어 코드(명령어)**가 저장되는 영역
  • 함수 코드, 실행 코드 등이 저장됨
  • 수정할 수 없는 읽기 전용(Read-Only) 메모리
void Hello() { cout << "Hello World!"; }

 

 

데이터(Data) 영역

역할:

  • 전역 변수, 정적 변수(static), 상수(const) 등이 저장됨
  • 프로그램 실행 시작부터 종료까지 유지됨
int globalVar = 10;   // 전역 변수 → 데이터 영역
static int staticVar = 20; // 정적 변수 → 데이터 영역
const int CONST_VAL = 100; // 상수 → 데이터 영역

 

 

힙(Heap) 영역

역할:

  • new 연산자로 할당되는 동적 메모리가 저장됨
  • 사용자가 직접 delete 해야 함 (안 하면 메모리 누수 발생)
int* ptr = new int(30);  // 동적 할당 → 힙 영역
delete ptr;  // 메모리 해제



스택(Stack) 영역

역할:

  • 함수 호출 시 생성되는 지역 변수, 매개변수가 저장됨
  • 함수가 끝나면 자동으로 해제됨 (LIFO 구조)
void func() 
{
    int localVar = 50;  // 지역 변수 → 스택 영역
}

 

 

 

요약

메모리 영역 저장 특징
코드 영역 실행 코드(기계어) 읽기 전용, 함수 코드 저장
데이터 영역 전역 변수, static, const 프로그램 실행 동안 유지
힙 영역 new로 할당된 메모리 직접 delete 해야 함
스택 영 지역 변수, 함수 호출 정보 함수 종료 시 자동 해제

 

 

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

C++ Class  (0) 2025.03.07
C++ 포인터와 레퍼런스  (0) 2025.03.07
C++ 함수에 대한 이해와 메모리 구조  (0) 2025.03.07
변수의 선언과 초기화 & 메모리 할당 과정  (0) 2025.03.05
기본 - 컴파일러  (0) 2025.03.05