stackheapallocation

stack과 heap memory의 차이를 설명해 주세요

예상 시간
6
30초 답변

꼬리질문

조금 더 깊게 물어본다면

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

stack overflow는 왜 발생하나요?

부가 설명

function createUser() {
  const name = "Joon";
  const user = { name };
  return user;
}
 
const savedUser = createUser();

createUser의 함수 호출 자체는 끝나지만 반환된 객체는 savedUser가 참조하고 있으므로 계속 살아 있을 수 있습니다. 이런 동적 객체는 heap 관점으로 설명할 수 있습니다.

언어와 runtime마다 세부 구현은 다르지만, stack은 함수 호출과 수명 관리가 단순한 영역이고 heap은 동적 할당과 더 긴 수명을 가진 영역입니다.

JavaScript 개발자에게는 이 구분이 closure, garbage collection, memory leak과 연결됩니다. 함수 실행이 끝나도 closure가 참조하는 객체는 heap에 남아 있을 수 있습니다.

한 줄 정리

stack은 함수 호출처럼 수명이 명확한 데이터를, heap은 동적으로 만들어져 더 오래 살아 있을 수 있는 객체를 관리하는 영역입니다.