Estrella'sdevelopment blog

Frontend infoInformations about frontend

Server infoinformations about server

Database infoinformations about database

ETCNews that is related to software

Basic infobasic information about software

Searchsearch posts

I'm also on

Githubif you see my interests

스택과 힙


스택과 힙을 창고로써 비유하자면

###스택(stack)은

원시타입만 올 수 있으며 크기와 순서가 일정하게 쌓인다.

창고로 치면 문이 하나밖에 없다.

물건이 들어갈 수 있는 문과 나가는 문이 하나인데 문이 존재하려면 물건의 크기를 알아야한다.

크기를 알고 시작위치를 알면 위치도 알 수 있기 때문에 메모리에 넣고 찾을 수 있다.

###힙(heap)

힙은 크기를 알 수 없고 따라서 어디에 물건이 위치해 있는지 어디에 넣어야하는지 알 수 없다.

따라서 물건을 빼내기 위해서는 주소값을 들고 있어야 하고 해당 주소값은 물건의 크기와 위치를 알고 있어서 (<- 추가적 공부가 필요함.) 물건을 확인하고 찾을 수 있다.

주소값을 들고 있는 정보는 스택에 쌓인다

정리하면, 힙은 값을 가지고 있고, 스택은 값에 대한 참조를 들고 있다(storage와 메모리의 차이?)

프로그램에서 함수가 실행되면 예를 들면 a ()( { b() { c() } } 가 프로그램이라고 해보자.

순서대로 a, b, c로 스택에 담아두면 종료를 하면 콜스택에 담은 b의 함수를 찾아가 실행한다.

B 에서 담긴 c함수가 콜스택에 쌓이게 되고 b가 종료되면 c함수로 찾아가 실행한다.

  • C에서는 const에 * const A는 주소값을 , const * A는 객체 자체를 상수로 받도록 처리해줄수 있다.