[Stack & Heap]
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
반응형
'컴퓨터언어 > 자료구조&알고리즘' 카테고리의 다른 글
[Hash Table] 배열과 달리 비연속적인 공간에 데이터를 저장 (0) | 2020.05.22 |
---|---|
[배열] string 거꾸로 출력하기 (0) | 2020.05.21 |
[Array - VanillaJS] 배열 만들어보기 (0) | 2020.05.21 |
[Array] 배열, 정적배열, 동적배열 (0) | 2020.05.21 |
[Big O] 미래를 내다보고 코드를 효율적으로 짜자 (0) | 2020.05.19 |