프로그램의 프로세스가 사용할 수 있도록 미리 예약되어 있는 메인 메모리의 영역이다.
예를 들면 하나의 프로그램은 처리를 위해 한 명이상의 사용자로부터 서로 다른 양의 입력을 받을 수 있으며
즉시 모든 입력데이터에 대해 처리를 개시한다.
운영체계로부터 이미 확보된 일정량의 힙 저장공간을 가지고 있으면 저장과 관련된 처리를 좀 더 쉽게 할 수 있으며
일반적으로 필요할 때마다 운영체계의 운영체계에게 매번 저장공간을 요청하는 것보다 빠르다.
프로세스는 필요할 때 heap 블록을 요구하고 더 이상 필요 없을 때 반환하며
이따금씩 자투리모으기를 수행함으로써 자신에게 할당된 heap을 관리한다.
여기서 자투리모으기란 더 이상 사용되지 않는 블록들을 사용 가능한 상태로 만들고
또한 heap 내의 사용 가능한 공간을 인지함으로써 사용되지 않은 작은 조각들이 낭비되지 않도록 하는 것을 말한다.
스택은 블록들이 저장공간으로부터 어떤 순서에 입각하여 꺼내어지고 또 같은 방법으로 반환된다는 것을 제외하고는 heap과 비슷하다.
일반적으로 값타입(Value Type)은 스택(Stack)에 메모리가 생성되며
그리고 참조타입(Reference Type)은 힙(Heap)에 메모리가 생성된다고 생각한다.
하지만 참조타입은 스택과 힙영역을 동시에 사용하게 된다.
우리가 특정 클래스를 이용하여 객체의 이름만 만들었다면 스택에 4바이트의 참조값을 위한 공간이 확보되는 것이다.
그리고 new 연산자로 객체의 메모리를 생성하였다면 그때에 힙영역에 해당 객체의 메모리가 생성되는 것이다.
이에 반해 값타입은 변수이름의 선언과 동시에 스택영역에 메모리를 확보하게 된다.
| Static 변수 (0) | 2007/05/18 |
|---|---|
| Thread사용시 메인의 컨트롤 업데이트 방법 (0) | 2007/05/05 |
| ■ 값타입과 참조타입의 메모리 형성의 차이 ■ (0) | 2007/04/04 |
| 닷넷 프레임워크 3.0 런타임 설치 (0) | 2007/03/14 |
| HLSL (0) | 2007/02/27 |
| Direct3D 메시의 크기 설정 (0) | 2007/02/14 |