Programming Language/C,C++

C, C++] 메모리 영역(Code, Data, Stack, Heap)

TwinParadox 2018. 2. 11. 19:03
728x90

프로그램 실행 시 할당되는 메모리 영역은 Code, Data, Stack, Heap, 네 가지로 분류할 수 있는데, 이에 대한 이해가 아예 없는 상태에서도 자연스럽게 Stack, Heap에 대한 감이 잡히게 된다. 확실히 이들에 대해서 조금 정리해두는 것이 좋을 것 같아 글을 끄적여 놓는다.


Code

작성한 코드라고 보면 되며 프로그램 종료 시점까지 메모리에 적재됨.


Data

전역 변수, static 변수 등이 저장되는 영역으로 이 역시 프로그램 종료 시점까지 메모리에 적재됨.


Stack

자료구조를 접한 사람들이 아는 그 스택의 성격(LIFO)을 가지고 있음.

함수 호출, 지역 변수, 매개 변수, 반환 값 등을 저장하며, 함수 종료 시점에 시스템에 반환됨.

프로그램에서 사용하는 임시 메모리 영역으로, 컴파일 시점에 크기 결정.


Heap

동적 할당한 메모리가 저장되는 영역으로, 프로그래머가 직접 할당하고 해제하는 메모리가 이에 위치함.

C에서는 malloc/realloc/free 등으로 관리, C++에서는 new/delete로 관리가 가능함.

런타임에 할당 메모리 크기를 결정하면 이 영역을 사용하게 됨. 

728x90