| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 코딩
- c언어
- 알고리즘
- 프론트엔드
- 정렬
- BFS
- 혼자 공부해서 개발까지
- 크래프톤 정글
- DFS
- HTML기초
- frontend
- Git
- CSS
- react
- 프론트앤드
- js
- javascript
- 그리디
- 알고리즘 기초
- Mini-React
- 팀프로젝트
- 그래프
- html
- 백준
- Python
- 해시
- 프로그래머스
- 개발자
- 코딩테스트
- 정글
Archives
- Today
- Total
민혁이의 IT스토리
Coalescing: 인접한 가용 블록 병합 알고리즘 본문
Coalesce() 함수 사용이유
- malloc에서 메모리를 반복적으로 할당/해제하다 보면,
메모리가 조각조각 나뉘는 외부 단편화(external fragmentation)가 발생한다. - 이 문제를 해결하기 위해 free 블록들을 합쳐주는 과정이 필요한데,
그 역할을 하는 함수가 바로 coalesce()이다.
4가지 병합 케이스별 시각적 설명

Case 1️⃣ : 앞, 뒤 모두 할당된 경우
- 병합할 블록이 없음 → 그대로 반환
- return bp
Case 2️⃣ : 앞은 할당, 뒤는 가용
- 현재 블록과 뒤 블록 병합
- 크기를 더하고, header/footer 업데이트
Case 3️⃣ : 앞은 가용, 뒤는 할당
- 앞 블록과 현재 블록 병합
- bp를 PREV_BLKP(bp)로 옮기는 이유 강조
Case 4️⃣ : 앞, 뒤 모두 가용
- 세 블록을 모두 합쳐서 하나로
- header는 앞 블록에, footer는 뒤 블록에 기록
코드 설명
