함수 또는 클래스

Stack Area

지역 변수, 매개 변수와 같이 선언과 삭제가 빈번하게 이루어 지는 데이터가 선언되는 영역. Stack 영역은 Thread당 하나의 영역이 할당된다.

Data Area

Static Variable

코드 내에 Static으로 선언된 변수들이 위치하는 영역으로 프로그램이 생성될 때 할당된다.

Global Variable

전역변수들이 선언되는 영역으로 프로그램 생성시에 할당된다.

Heap

Heap Memory를 호출하는 함수에 의해서 생성된 데이타가 위치하는 영역.

Code Area

함수 코드가 저장되는 영역. 함수 코드는 수행시간에 변경되면 안되기 때문에 Read-Only로 설정되어져 있다.

* Advantage of Heap Memory
  – Windows는 기본적으로 Page단위로 메모리를 관리한다. 이는 32Byte를 사용하기 위해 4098Byte의 Page를 Load해서
    사용해야 되는 것을 의미하며, 이는 작은 크기의 데이터에 부적절하다.

  – Windows는 커널에 Heap Object를 두어 작은 크기의 메모리 영역을 효율적으로 사용할 수 있도록 한다.

* Disadvantage of Heap Memory
  – Low Speed : 다중 스레드 환경에서 Heap Memory에 대한 접근은 하나의 스레드만 할 수 있기 때문에 나머지
                       스레드들은 대기해야 하므로 속도가 느려진다.
  – Memory 제어가 어렵기 때문에 다른 메모리 영역으로 침범할 우려가 있다.