Stack(스택)과 Heap(힙)

최장범·2023년 11월 15일

공부

목록 보기
16/24

스택과 힙

  • 메모리를 관리하는 두가지 주요한 데이터 저장 영역
  • 서로 다른 부분에 위치하고 다른 목적과 특징을 가지고 있다

Stack(스택)

  • 함수 호출 및 지역변수 저장에 사용됨
    • 함수가 호출되면 스택 프레임 생성
    • 함수가 반환되면 해당 스택 프레임 제거
  • 고정된 크기와 한정된 용량
  • 데이터의 추가 및 제거가 상대적으로 빠름
  • 정적 할당 방식
    • 변수들의 메모리 공간이 컴파일 시에 정해진다
  • 지역변수, 매개변수, 함수 호출 및 복귀 주소등을 저장

Heap(힙)

  • 동적으로 할당된 메모리
    • 필요에 따라 메모리를 동적으로 할당,해제 함
  • 프로그램 실행중에 동적으로 생성,해제되는 메모리의 저장에 사용
  • 유연한 크기를 가짐
    • 동적 할당된 데이터에 대한 메모리를 보관
  • 스택보다 느린 속도, 그러나 데이터 할당 및 해제가 유연함
  • new 연산자, 객체, 배열 등을 저장

차이점

  • 할당 방식의 차이
    • 스택은 정적 할당, 컴파일시 결정
    • 힙은 동적 할당, 실행 시간에 동적으로 할당 및 해제
  • 속도
    • 스택은 빠르고 즉시 할당 및 해제가 가능
    • 힙은 스택보다 느리지만 유연한 데이터 관리 가능
  • 사용처
    • 스택:지역변수, 매개변수, 함수 호출 및 복귀 주소
    • 힙: new 연산자, 객체, 배열

0개의 댓글