본문 바로가기

CS

스택, 힙 메모리와 차이점

스택(Stack)과 힙(Heap)은 컴퓨터 메모리에서 데이터 및 프로그램 실행에 사용되는 두 가지 주요 메모리 영역입니다. 이 두 영역은 데이터를 저장하는 방식, 할당 및 해제 방법, 사용 목적 등에서 차이가 있습니다.

스택(Stack):

  • 특징:
    • 스택은 메모리의 한 부분으로, 함수 호출 및 지역 변수와 같은 정적 메모리 할당에 사용됩니다.
    • 데이터를 차곡차곡 쌓아 올리는 구조로, 후입선출(LIFO, Last In First Out) 방식을 따릅니다. 가장 최근에 추가된 데이터가 가장 먼저 제거됩니다.
    • 주로 함수 호출 시 지역 변수, 함수의 매개변수, 복귀 주소 등을 저장하고 관리합니다.
  • 할당 방식:
    • 스택 메모리는 컴파일 시 크기가 결정되며, 메모리 관리가 운영체제에 의해 자동으로 이루어집니다. 지역 변수와 함수 매개변수가 스택에 할당되며, 함수가 종료되면 자동으로 제거됩니다(팝됨).
  • 속도:
    • 스택은 메모리 할당과 해제가 간단하며, 직관적인 데이터 접근 방식을 사용하기 때문에 상대적으로 빠른 접근 속도를 가집니다.

힙(Heap):

  • 특징:
    • 힙은 동적 메모리 할당에 사용되며, 프로그램 실행 중에 동적으로 데이터를 할당하고 해제하는 데 사용됩니다.
    • 데이터를 무작위로 저장하며, 사용자가 메모리를 할당하거나 해제할 수 있는 유연한 메모리 공간입니다.
    • 힙 메모리는 자동으로 정리되지 않으며, 명시적으로 할당된 메모리는 해제되어야 합니다. 그렇지 않으면 메모리 누수가 발생할 수 있습니다.
  • 할당 방식:
    • 힙 메모리는 런타임 중에 동적으로 할당되며, 크기와 수명은 개발자가 관리해야 합니다. 메모리 할당 및 해제는 개발자가 직접 제어해야 합니다.
  • 속도:
    • 힙은 동적으로 메모리를 할당하고 해제하기 때문에 스택보다 메모리 액세스에 대한 오버헤드가 있을 수 있습니다.

차이점:

  • 스택은 정적 메모리 할당에 사용되며, 함수 호출 및 지역 변수 저장에 주로 사용됩니다. 자동으로 관리되며 빠른 접근 속도를 가집니다.
  • 은 동적 메모리 할당에 사용되며, 사용자가 메모리를 직접 관리해야 합니다. 유연성이 있지만 오버헤드가 있을 수 있습니다.

'CS' 카테고리의 다른 글

자료구조의 종류와 차이점  (0) 2023.11.16
값 형식과 참조 형식의 차이점  (0) 2023.11.16
선택 정렬과 버블 정렬  (0) 2023.11.16
정렬 알고리즘이란  (0) 2023.11.16
콜백이란  (0) 2023.11.16