※ 이 글을 작성하기 전에 본인은 이 분야의 전문성을 가진 전문가가 아님을 미리 밝힙니다. ※


#1. 메모리 영역

메모리 영역은 다음과 같다.


위의 그림과 같이 메모리 영역은 크게 4가지 영역으로 나눌 수가 있다.

Code / Data / Heap / Stack 영역으로 나눌 수가 있는데 이 메모리 영역들에 대해서 알아보자.


1. Code 영역

사용자가 작성한 소스코드가 저장되는 영역으로 프로그램이 끝날 때 까지 메모리에 적재되어 진다.

Text 영역이라고도 불리며, 프로그래머가 작성한 소스코드를 실행하게 된다.


2. Data 영역

프로그램의 전역변수 혹은 Static변수가 저장되는 메모리 영역이다.

이 영역 또한 프로그램이 끝날 때 까지 메모리에 적재되어 있는 영역이다.


3. Heap 영역

프로그래머가 동적으로 할당하거나 해제할 수 있는 메모리 공간이다.

즉, 사용자가 직접 관리를 해야 하는 메모리 영역이다.

C언어 같은 경우 malloc() , free()와 같은 연산자들을 통해서 메모리를 할당 및 해제 하게 되고

C++언어 같은 경우 new[] , delete[]와 같은 연산자들을 통해서 메모리를 할당 및 해제 하게 된다.

런타임시 크기가 결정되는 메모리 영역이며 Stack영역과 반대로 메모리에 데이터가 쌓이기 때문에 Stack영역의 크기와

반비례하게 결정되어 지는 영역이다.

굳이 사용하지 않아도 되는 메모리 영역이긴 하지만, 메모리의 효율적인 관리를 위해서는 사용되어질 수 밖에 없는 메모리 영역이다.


4. Stack 영역

프로그램의 지역변수 , 함수의 매개변수 , 함수 호출 시 Return값 등이 저장되는 메모리 영역이다.

함수 호출 시 생성되고 함수 종료 시 시스템에 다시 반환되어지는 메모리 영역이다.

컴파일시 크기가 결정되는 메모리 영역이며 Heap영역과 반대로 메모리에 데이터가 쌓이기 때문에 Heap 영역의 크기와

반비례하게 결정되어 지는 영역이다.











+ Recent posts