본문 바로가기
C++/C++ 문법

C/C++ 메모리 구조

by Sein_ 2025. 10. 13.
728x90

[추가 학습]

 

프로그램을 실행시키면 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당해준다. 
할당되는 메모리 공간은 크게 스택(Stack), 힙(Heap), 데이터(Data)영역으로 나뉘어진다. 

 

 

데이터(Data) 영역

  • 전역 변수(global)와 static 변수가 해당 영역에 저장된다.
  • 프로그램이 시작할 때 할당되고, 종료할 때까지 유지된다. (전역변수가 프로그램이 종료될 때 까지 존재하는 이유)

 

스택(Stack) 영역

  • 프로세스 시작 시 정해진 크기만큼 미리 할당해둔 영역
  • 함수 호출 시 생성되는 지역 변수와 매개변수가 저장된다.
  • 함수 호출이 끝나면 해당 스택 프레임이 사라지고 메모리가 자동으로 해제된다.
  • 스택에서 배열을 선언할 때는 크기를 컴파일 타임에 알아야 한다.

   실행 중(Runtime) 크기가 정해지는 배열은 힙을 이용한 동적 할당이 필요

 

힙(Heap) 영역

  • OS로부터 필요할 때마다 할당되어 공간을 유연하게 사용할 수 있다.
  • 프로그램 실행 중에 필요에 따라 메모리를 요청해서 쓰는 공간이다.
  • 배열 크기 등을 실행 시점에 결정해야 할 때 쓰인다. (동적 메모리 할당)
  • 동적 메모리 사용 시 malloc/free (C) 또는 new/delete (C++)로 해제해 주지 않으면 메모리 누수가 발생

 

 

https://dsnight.tistory.com/m/50

 

[C] 스택(Stack), 힙(Heap), 데이터(Data)영역

C언어의 메모리 구조 프로그램을 실행시키면 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당해준다. 할당되는 메모리 공간은 크게 스택(Stack), 힙(Heap), 데이터(Data)영역으로 나

dsnight.tistory.com