- 동적 메모리 할당이란?
-컴퓨터 프로그래밍에서 실행 시간 동안 사용할 메모리 공간을 할당하는 것을 말한다.
-동적 메모리 할당을 사용하는 이유는 프로그램을 실행시키기 전에 자료구조의 크기를 알 수 없는 경우들이 있기 때문이다.
- 동적 메모리 할당기란?
힙(heap)이라고 말하는 가상메모리 영역을 관리한다.
1. Malloc Lab을 들어가기 전에
malloc lab을 구현하기 전에 알아야할 개념 몇가지를 정리하려고 한다.
목표 1: 처리량 극대화(즉, 처리 속도)
목표 2: 메모리 이용도 최대화(즉, 메모리 활용도)
2. 단편화
1) 내부 단편화
- 할당된 블록이 데이터 자체보다 더 클 때 발생한다.
- 정량화하기가 간단하다. (즉, 할당된 블록의 크기와 디들의 데이터 사이의 차이의 합이다.)
2) 외부 단편화
- 할당 요청을 만족시킬 수 있는 메모리 공간이 전체적으로 공간을 모았을 때는 충분한 크기가 존재하지만, 이 요청을 처리할 수 있는 단일한 가용블록이 없는 경우 발생한다.
- 내부 단편화보다는 훨씬 더 측정하기 어려운데, 그 이유는 이전 요청의 패턴과 할당기 구현에만 의존하지 않고 미래의 요청 패턴에 의존하기 때문이다.
- 측정하기 어렵고 예측하기 불가능하기 때문에 할당기들은 대게 많은 수의 더 작은 가용 블록들보다는 더 적은 수의 더 큰 가용 블록들을 유지하려는 방법을 채택한다.