[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
반응형