Stack과 Heap #21
jcrescent61
started this conversation in
Network
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
WWDC 2016 Understanding Swift performance를 보니…
Stack은 메모리 주소를 ‘줄임’으로서 메모리를 할당하고
Heap은 메모리 주소를 ‘증가’시킴으로서 메모리에 할당한다는 설명을 듣고 의문점이 생겼다. (CS 공부를 게을리한 탓)
그동안 알고 있었던 메모리 구조 사진
대충 보면 스택이 가장 낮은 주소이고 점점 올라갈수록 높아질 것 같다.
운영체제책(공룡책)에서 설명하는 메모리구조
해당 사진을 보면 text(Swift상에서 code영역)에서 data, heap, stack 순서인걸 한눈에 알 수 있다. 전공서적이니 이게 정석이지 않을까?
Stack과 Heap
Stack과 Heap은 같은 메모리 영역을 공유한다.
Stack은 높은 메모리 주소부터 점점 낮은 주소로.
Heap은 낮은 메모리 주소부터 할당받는다.
Overflow
stack이나 heap영역에 너무 많은 메모리를 할당하게 되어 자신의 영역을 초과 한 경우 나타나는 현상
왜 stack은 빠르고 heap은 느릴까?
자료구조의 특성 때문이다.
Stack
Stack에 영역에 할당하려면 포인터를 감소시켜 push하고
메모리에서 해제하려면 포인터를 증가시켜 pop하는 등 간단한 자료구조이다. LIFO이다.
Heap
Heap에 메모리를 할당하려면 Heap 데이터 구조를 검색하고 사용되지 않는 영역중 알맞은 크기의 영역을 찾아낸 후 메모리에 할당한다.
탐색하고 메모리에 할당하는 과정에서 레이스컨디션이 일어난다면????????? 끔찍하다.
thread safe를 보장하려면 그만큼의 비용이 들기 때문에 Stack에 비해 당연히 성능이 느릴 수 밖에 없다는 점.
→ 코딩테스트, 알고리즘 강의에서 설명하는 힙을 구현해보면 이해하는 데 도움이 될까?
답변)공간을 어떻게 찾는가?를 공부해본다면 괜찮을듯메모리구조의 힙과 자료구조의 힙이랑 조금 다르다. 검색해보아라
heap 어떻게 서칭하고 어떻게 할당하는데??? 찾아봤지만… 없다…..
Beta Was this translation helpful? Give feedback.
All reactions