반응형
정의
힙(heap)과 스택(stack)은 데이터 및 함수 호출을 관리하는 데 서로 다른 목적을 제공하는 별개의 두 영역이다.
스택
스택은 컴파일러 또는 런타임 환경에서 관리하는 메모리 영역
함수 호출을 실행하고 지역 변수 및 함수 호출 프레임을 추적하는 데 사용된다. 스택은 함수가 호출되고 반환될 때 자동으로 늘어나고 줄어든다.
- 스택 프레임 : 프로그램의 각 함수 호출은 활성화 레코드라고도 하는 스택 프레임을 스택에 생성한다. 스택 프레임에는 해당 함수에 대한 반환 주소, 매개 변수 및 지역 변수와 같은 정보가 포함
- LIFO 구조 : 스택은 후입선출 원칙에 따라 작동한다. 함수가 호출되면 스택 프레임이 스택으로 푸시되고 함수가 반환되면 스택 프레임이 스택에서 팝 된다.
- 고정 크기 : 스택은 일반적으로 프로그램이 시작될 때 할당된 고정 크기를 가진다. 각 스택 프레임의 크기는 컴파일 시이간에 알려지며 함수의 지역 변수 및 매개변수와 같은 요소에 의해 결정될 수 있다.
- 자동 메모리 관리 : 스택에 할당된 메모리는 컴파일러 똔느 런타임 환경에 의해 자동으로 관리된다. 함수가 반환되면 스택 프레임과 연결된 메모리가 할당 해제된다.
힙
힙은 동적 메모리 할당에 사용되는 메모리 영역이다. 일반적으로 운영체제 또는 런타임 환경에서 관리하며 수명이 무한하거나 동적 메모리 관리가 필요한 개체 또는 데이터를 저장하는 데 사용된다.
- 동적 메모리 할당 : 힙의 메모리는 malloc, new 또는 해당 할당 해제 함수 (free, delete)와 같은 함수를 사용하여 프로그래머가 명시적으로 할당 및 할당 해제합니다.
- 변수 수명 : 힙의 메모리는 함수 호출 범위를 넘어 지속될 수 있습니다.여러 기능에서 액세스해야 하거나 프로그램 논리에 의해 수명이 결정되는 개체 또는 데이터에 사용된다.
- 가변 크기 : 힙에 할당된 메모리 크기는 런타임에 동적으로 변할 수 있다.
- 수동 메모리 관리 : 프로그래머가 힙의 메모리 관리를 담당한다. 메모리 누수를 방지하려면 더 이상 필요하지 않을 때 할당된 메모리를 해제하는 것이 중요하다.
- 비순차적 구성 : 힙은 일반적으로 비순차적 방식으로 구성되며 할당된 메모리 블럭은 힙 공간 전체에 흩어져 있다. 메모리 할당 및 할당 해제 작업은 시간이 지남에 따라 조각화 될 수 있다.
[참조] : https://courses.engr.illinois.edu/cs225/fa2022/resources/stack-heap/
반응형
'CS 지식' 카테고리의 다른 글
GB, GiB ( 기비바이트 ) 란? (0) | 2023.06.26 |
---|---|
PDU(Protocol Data Unit)란? (0) | 2023.06.26 |
샤딩(Sharding)이란? (0) | 2023.05.20 |
Openshift 란? (0) | 2023.05.20 |
Swagger란? (0) | 2023.05.15 |