컴퓨터언어/자료구조&알고리즘
[Stack & Heap]
bbanpro
2020. 5. 19. 14:46
728x90
반응형
프로그램이 동작할 때 메모리를 크게 Code, Stack, Heap 3가지 구역으로 나눌 수 있다.
1단계 : Code
우리가 짠 코드가 실행되기 위해서는 기계가 알아들을 수 있는 머신코드가 필요하며, 이 변환을 "컴파일"이라고 한다.
머신코드를 메모리에 올리는 곳을 Code 영역이라고 한다.
2단계 : Stack
머신코드이든 우리가 영어로 작성한 코드이든 실행순서는 동일하다.
Stack 영역에서는 우리가 작성한 코드를 기초로 변수들에게 자료형에 따라 메모리를 할당해준다.
즉 Stack은 머신코드가 메모리에 직접 접근하는 것이다.
3단계 : Heap
Heap은 머신코드가 메모리에 직접 접근할 수 없는 부분이다.
우리가 작성한 코드대로 변수에 메모리를 할당하고 나서 메모리가 더 필요한 경우, 로직에 따라 Pointer가 Heap으로부터 추가 메모리를 가져오게 된다.
Stack | Heap | |
메모리 필요 시 | 직접 가서 가져온다 | malloc()함수와 포인터를 통해 간접적으로 가져온다 |
크기 | 자료형에 따라 고정 | 가변적 |
728x90
반응형