본문 바로가기

system/basic

2. Heap(힙)

1. 힙이란?


80x86 시스템의 메모리 구성중 사용자의 필요에 의해 동적으로 메모리를 할당하는 곳. 프로그램 실행 중 할당해야할 메모리의 크기를 결정해야 하는 경우 사용. 프로그램 실행중 해당 힙이 없어질시 메모리 부족으로 이상 종료함.


2. 스택과의 차이점?


스택 영역에서는 LIFO(후입선출)방식이 사용되지만 힙 영역에서는 대개 포인터 변수를 통해 동적으로 할당하기 때문에 프로그램들이 요구하는 블록 크기나 요구 순서에 따른 일정한 규칙이 없음.


스택 영역에서는 해당 함수 종료시 할당된 메모리가 사라지지만 힙 영역에서는 프로그래머가 free()하거나 쓰레기 수집(GC - Garbage Collector)이 일어나기 전까지는 그대로 유지된다.


3. 동적 메모리 할당/해제 방법


new 또는 malloc()/calloc()/realloc() 함수를 사용하여 동적 메모리 할당.


ex) char *p = new char[100];

     char *p = malloc(40);


free() 함수를 사용하여 동적 메모리 해제.

ex) free(p);

'system > basic' 카테고리의 다른 글

1. Register(레지스터)  (0) 2017.03.04
0. Stack(스택)  (0) 2017.03.04