왜 malloc은 요청한 것보다 더 많은 메모리를 할당할까?

Why malloc always does more than I asked for?

왜 malloc은 요청한 것보다 더 많은 메모리를 할당할까?

C 프로그래머라면 흔히 `malloc(13)`이 정확히 13바이트를 반환한다고 생각하지만, 실제로는 그렇지 않습니다. 이 글은 저자가 직접 메모리 할당기를 구현하면서 발견한 내부 구조를 설명합니다. 할당된 메모리 블록에는 사용자 메모리 외에도 헤더, 백 포인터, 정렬을 위한 패딩이 포함됩니다. 또한 free()를 구현하려면 메타데이터가 필수적이며, bump 할당기에서 free 리스트 기반 할당기로의 전환, 블록 분할(splitting), 병합(coalescing) 등의 개념을 다룹니다. 내부 단편화와 메타데이터 증가라는 트레이드오프를 강조합니다.

free(ptr)는 포인터 하나만 인자로 받는데, 할당자가 메모리를 회수하려면 호출자가 알려주지 않은 질문에 답해야 합니다: 이 할당은 얼마나 컸고, 실제로 어디서 시작했는가?

이 날의 다른 글

2026-07-23