스택과 힙 둘다 코드상에서 런타임에 사용할 수 있는 메모리의 부분이다.
스택
- 값을 받아들인 순서대로 값을 저장하고 반대 방향으로 값을 값을 지움(LIFO)
- 속도가 빠름
- 새로운 데이터를 넣어두기 위한 공간 혹은 데이터를 가져올 공간을 검색할 필요가 없음
- 스택에 담긴 모든 데이터가 결정되어 있는 고정되 크기를 가짐
힙
- 컴파일 타임에 크기가 결정되어 있지 않거나 크기가 변경될 수 있는 데이터를 저장
- 데이터를 힙에 넣는 방법 (할당 방법)
- 저장할 공간이 있는 확인
- 운영체제가 커다란 힙 안의 빈 어떤 지점을 찾아서 사용중이라고 표시
- 해당 지점의 포인터를 리턴
- 포인터는 결정되어 있는 고정된 크기의 값이므로 스택에 포인터를 저장
- 속도가 느림