스택과 힙
- 메모리를 관리하는 두가지 주요한 데이터 저장 영역
- 서로 다른 부분에 위치하고 다른 목적과 특징을 가지고 있다
Stack(스택)
- 함수 호출 및 지역변수 저장에 사용됨
- 함수가 호출되면 스택 프레임 생성
- 함수가 반환되면 해당 스택 프레임 제거
- 고정된 크기와 한정된 용량
- 데이터의 추가 및 제거가 상대적으로 빠름
- 정적 할당 방식
- 지역변수, 매개변수, 함수 호출 및 복귀 주소등을 저장
Heap(힙)
- 동적으로 할당된 메모리
- 프로그램 실행중에 동적으로 생성,해제되는 메모리의 저장에 사용
- 유연한 크기를 가짐
- 스택보다 느린 속도, 그러나 데이터 할당 및 해제가 유연함
- new 연산자, 객체, 배열 등을 저장
차이점
- 할당 방식의 차이
- 스택은 정적 할당, 컴파일시 결정
- 힙은 동적 할당, 실행 시간에 동적으로 할당 및 해제
- 속도
- 스택은 빠르고 즉시 할당 및 해제가 가능
- 힙은 스택보다 느리지만 유연한 데이터 관리 가능
- 사용처
- 스택:지역변수, 매개변수, 함수 호출 및 복귀 주소
- 힙: new 연산자, 객체, 배열