할당기(allocator)에는 두가지 종류가 있다.
Explicit allocator 구현 방법에는 여러 종류가 있다.
맨처음 implicit를 구현하라고 했을 때 엥? c에 가비지 컬렉터가 있다고? 엥??? 나한테 그걸 만들라고???? 이 생각이 들었다.
개념을 탄탄히 하지 않으니 이런 바보 같은 소리나 하고 있다...
나같은 사람은 없길 바라며...
할당기를 나누는 묵시, 명시의 기준은 "우리가 직접 메모리 할당, 해제를 해줘야 하냐 마냐"이다.
묵시적 할당에서의 묵시는 컴퓨터가 자기 알아서 척척 해내는 거고,
명시적 할당에서의 명시는 우리가 직접 명시적
으로, malloc(20)! 이렇게 해주는 것이다.
그렇다면 명시적 할당기에서 list를 묵시, 명시로 나누는 기준은 무엇일까?
할당 요청이 들어왔을 때 "할당 여부가 미리 명시되어 있느냐 마느냐"라고 생각했다.
이게 무슨 소리냐고? 20만큼 할당을 요구하는 요청이 들어왔다고 예를 들어보겠다.
implicit free list는 블록들에게 똑똑~ 너는 가용블럭이니? 이렇게 물어봐야지 (header나 footer를 방문해서) 가용여부를 알 수 있다. 난 가용여부가 명시되지 않았다
고 이해했다.
하지만 explicit free list는 애초에 가용가능한 블록들을 list에 담아두고 거기서 사이즈에 맞는 것을 찾아내기 때문에 가용여부가 명시
되어 있다고 이해했다.
말로 설명할 때보다 글로 쓰니 더 어려워 지는 기분... 이해가 되지 않는다면... 내가 설명하는 능력이 부족한 탓이다...
다음 게시글부터는 malloc을 상세히 설명하니 정신줄을 꽉잡아야한다. (독자 말고... 글을 적는 내가... 꽉 잡아야한다...)