stackheaplifetime
스택과 힙 메모리의 차이를 설명해 주세요
- 예상 시간
- 6분
30초 답변
꼬리질문
조금 더 깊게 물어본다면
답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.
stack overflow는 언제 발생하나요?
힙 할당은 왜 스택보다 비싸다고 하나요?
GC가 있으면 메모리 누수가 없나요?
지역 변수는 항상 스택에만 있나요?
스택과 힙은 어떻게 구분하나요?
부가 설명
스택은 함수 호출 기록을 따라가면 이해하기 쉽습니다. 함수가 호출되면 지역 변수와 복귀 주소 같은 정보가 frame으로 쌓이고, 함수가 끝나면 그 frame이 빠집니다. 이 흐름이 명확해서 빠르지만, 너무 깊은 재귀처럼 frame이 계속 쌓이면 stack overflow가 날 수 있습니다.
힙은 호출이 끝나도 살아 있어야 하는 데이터를 위해 필요합니다. 예를 들어 함수 안에서 만든 객체를 바깥에서 계속 참조해야 한다면 단순한 스택 생명주기로는 맞지 않습니다. 대신 힙은 누가 언제 더 이상 쓰지 않는지 관리해야 하므로 메모리 누수나 GC pause 같은 주제가 따라옵니다.
한 줄 정리
스택은 호출 흐름을 따라 자동으로 정리되고, 힙은 더 유연한 생명주기를 위해 동적으로 관리됩니다.