stackheaplifetime

스택과 힙 메모리의 차이를 설명해 주세요

예상 시간
6
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

stack overflow는 언제 발생하나요?

부가 설명

스택은 함수 호출 기록을 따라가면 이해하기 쉽습니다. 함수가 호출되면 지역 변수와 복귀 주소 같은 정보가 frame으로 쌓이고, 함수가 끝나면 그 frame이 빠집니다. 이 흐름이 명확해서 빠르지만, 너무 깊은 재귀처럼 frame이 계속 쌓이면 stack overflow가 날 수 있습니다.

힙은 호출이 끝나도 살아 있어야 하는 데이터를 위해 필요합니다. 예를 들어 함수 안에서 만든 객체를 바깥에서 계속 참조해야 한다면 단순한 스택 생명주기로는 맞지 않습니다. 대신 힙은 누가 언제 더 이상 쓰지 않는지 관리해야 하므로 메모리 누수나 GC pause 같은 주제가 따라옵니다.

한 줄 정리

스택은 호출 흐름을 따라 자동으로 정리되고, 힙은 더 유연한 생명주기를 위해 동적으로 관리됩니다.