Heap,Stack,Static

김대익·2022년 2월 18일

Stack은 위에서 아래로
Heap은 아래에서 위로 쌓아올라가고
Heap을 할당하고 해제하면서 빈공간이 생기기도 한다.

Heap은 새로운 메모리 공간을 받기위해 중간에 어느파트가 비어있는지, 어느정도의 공간이 필요한지
프로그램 실행 과정에 알 수 있다.
Multi thread 프로그래밍시에는 여러 Thread가 Heap메모리에 접근권한을 갖게되는데
그때 문제가 없기 위해 더 복잡하게 allocation을 하므로 Stack에 비해 Heap은 allocation / dealloc이 느려 Stack이 유리하다.

Stack의 경우 컴파일과정에서 모든 것이 이루어지기에 배열같은 경우 프로그램 실행시 할당이 불가능하고 큰 크기의 경우 Stack overflow로 프로그램이 멈출 수 있다.

C++에서는 object 개수에 상관없이 총 용량이 몇 kb미만이라면 무조건 Stack에 allocation하는게 맞다.

엄청난 크기의 배열을 allocation하고 싶으면 vector를 사용하자.

이외에 Static(global) 메모리 공간이 있는데 전역변수를 저장하며 보통 Heap 아래에 있다
process가 실행됨과 동시에 이 파트를 가지고 있는다.

0개의 댓글