기술 면접 예상 질문 - 스택, 힙 메모리란 무엇이며 어떤 차이가 있는지 비교해서 설명해주세요.
스택 메모리와 힙 메모리는 저장할 데이터의 크기 결정 시점, 메모리 관리, 접근속도, 크기 제한에서 차이가 있습니다.
스택 메모리는 컴파일 시점에 크기가 결정된 데이터들을 저장하는 메모리 영역 입니다.
메서드 호출하게 되면 메서드의 지역변수, 매개변수들이 스택에 저장됩니다.
힙 메모리는 런타임에 크기가 변하는 데이터를 동적 할당 방식을 사용해 저장하는 메모리 영역 입니다.
참조 형식의 데이터를 사용할 때는 힙 메모리 영역에 저장한 후 참조하여 사용합니다.
스택 메모리는 LIFO 방식으로 스택 프레임이 쌓이게되며 메서드가 종료될 때 자동으로 해제됩니다.
스택 프레임이 너무 많이 쌓이게 되거나 변수 크기가 스택에 할당된 크기를 초과하면 스택 오버 플로우가 발생합니다.
힙 메모리는 런타임에 할당되며 개발자가 관리해야되는 메모리 영역이지만 가바지 컬렉션을 지원하는 C#같은 언어에서는
가비지 컬렉터에 의해 관리되며 시스템의 사용가능한 메모리의 크기를 가져 크기가 제한적인 스택에 비해 훨씬 큰 공간을 사용할 수 있습니다.
스택 메모리는 Push, Pop으로 단순한 구조로 작동을 하기 떄문에 다음 작업을 예측할 수 있고 연속적인 메모리를 사용해서
힙 메모리 보다 속도가 빠릅니다. 대신 힙 메모리는 저장된 데이터를 찾아서 언제든지 참조할 수 있습니다.