🧠 메모리 구조란?

정의

메모리 구조는 프로그램이 실행될 때 사용되는 메모리 공간을 용도별로 나눈 구성이다.

프로그램은 실행 중에 코드, 전역 데이터, 동적 객체, 함수 호출 정보 등을 서로 다른 영역에 저장한다.
이 구조를 이해하면 메모리 사용 방식과 오류 원인을 파악하기 쉬워진다.

image

🧩 주요 영역

Code 영역

  • 프로그램의 소스코드가 저장되는 영역이다.
  • 함수, 제어문, 상수 등이 포함된다.
  • 실행 파일의 명령어가 위치한다.

Data 영역

  • 전역 변수와 static 변수가 저장되는 영역이다.
  • 프로그램 시작과 동시에 할당되고 종료 시 소멸한다.
  • 초기화된 데이터와 초기화되지 않은 데이터가 함께 관리된다.

Heap 영역

정의

Heap은 동적으로 메모리를 할당하고 해제하는 영역이다.

  • 프로그래머가 직접 또는 런타임이 동적으로 할당하는 메모리 공간이다.
  • 객체, 클래스 인스턴스, 가변 크기 데이터 등이 위치한다.
  • 크기가 실행 중에 결정된다.
  • 메모리 누수와 관련된 이슈가 자주 발생한다.

Stack 영역

정의

Stack은 함수 호출과 지역 변수 저장에 사용되는 임시 메모리 영역이다.

  • 함수 호출 시 생성되는 지역 변수와 매개변수가 저장된다.
  • 함수가 끝나면 함께 소멸한다.
  • 호출 흐름과 함께 빠르게 관리된다.

🔍 영역별 차이

영역 특징 생명주기
Code 실행 코드 저장 프로그램 종료까지
Data 전역/정적 데이터 저장 프로그램 종료까지
Heap 동적 할당 메모리 명시적 해제 또는 GC
Stack 함수 호출 정보와 지역 변수 저장 함수 호출 동안

⚠️ 주의할 점

  • Heap은 동적 할당이 많아서 관리가 중요하다.
  • Stack은 너무 많이 사용하면 스택 오버플로가 발생할 수 있다.
  • 메모리 구조를 알면 누수, 참조 문제, 범위 문제를 이해하기 쉬워진다.

📌 정리

  • 메모리 구조는 프로그램이 실행되는 동안 사용되는 영역을 나눈 것이다.
  • Code, Data, Heap, Stack의 역할이 다르다.
  • 각 영역의 생명주기와 용도를 이해하면 디버깅에 도움이 된다.

연결문서

댓글남기기