[기술면접/C,C++] 프로세스 메모리의 4가지 영역

김현아·2025년 8월 19일

기술면접

목록 보기
2/14

1. 코드(Code) 영역

‘실행 방법’을 담고 있는 핵심 구간으로, 실행할 프로그램의 기계어 코드가 저장되는 영역

  • 특징 : 보통 읽기 전용(Read-Only)으로 되어 있어, 코드가 실행 중에 함부로 수정되지 않게 보호한다.
  • 예시 : int main() {…]과 같은 함수 본문이 실제 기계어로 번역되어 올라간다.

2. 데이터(Data) 영역

전역 변수(global variable), 정적 변수(static) 변수 등이 저장되는 영역

  • 특징 : 프로그램이 시작 시 할당되고, 종료 시 해제된다.
    프로그램 전체에서 공유되는 값들을 보관하기 때문에, 잘못 관리하면 의도치 않은 사애 공유 버그가 발생하기도 한다.
  • 예시 : int g=10; static int s=0;

3. 힙(Heap) 영역

실행 중에 동적 할당되는 메모리가 저장되는 영역

  • 특징 : 프로그래머가 직접 malloc(), new 같은 함수로 할당하고, free(), delete로 해제해야 한다.
    제대로 관리되지 않으면 메모리 누수(memory leak)가 생기고, 보안 취약점도 발생한다.

4. 스택(Stack) 영역

함수 호출 시 지역 변수와 매개변수, 리턴 주소가 저장되는 영역

  • 특징 : LIFO(Last In, First Out) 구조로 관리된다. 함수가 호출되면 push, 종료되면 pop 방식으로 자동 관리되기 때문에, 프로그래머가 직접 해제할 필요가 없다.
    크기가 제한되어 있어 너무 많은 재귀 호출이나 큰 배열을 선언하면 Stack Overflow에러가 발생한다.
  • 예시 : void f(int a){int b;}

4가지 영역으로 나누는 이유

효율성, 성능, 안정성, 유연성을 동시에 잡기 위해
1. 효율성 : 언제 생기고 언제 사라지는지 구분
2. 성능 : CPU/OS가 빠르게 관리할 수 있음
3. 안정성/보안 : 접근 권한 제어 및 충돌 방지
4. 유연성 : 전역 변수부터 동적 객체까지 다양한 관리 가능

0개의 댓글