OS · MEMORY
malloc/free 내부 흐름
malloc은 요청 크기에 맞는 free block을 찾고, 없으면 OS에서 더 큰 영역을 받아 쪼개 쓰며, free는 블록을 반환해 재사용 후보로 만듭니다.
할당 흐름
allocator
request size
프로그램이 바이트 수 요청
free list
맞는 빈 블록 탐색
split/return
큰 블록을 나눠 포인터 반환
free/coalesce
반환 블록을 합쳐 재사용
request size
→
free list
→
split/return
→
free/coalesce
주의 지점
check
단편화
작은 할당과 해제가 반복되면 빈 공간이 쪼개집니다.
확장
내부 공간이 부족하면 brk/mmap 등으로 OS에 요청합니다.
이중 해제
이미 반환한 포인터를 다시 free하면 메모리가 깨질 수 있습니다.
누수
free하지 않은 블록은 프로세스가 끝날 때까지 남습니다.