serversim
학습시뮬레이터템플릿가격
…
…
메뉴 열기
학습↗시뮬레이터↗템플릿↗가격↗
내 Documents문서
전체 목차/3장/3.417 / 40

3.4 · 메모리와 포인터

힙의 동적 메모리 할당은 어떻게 동작할까?

실행 중 크기를 알게 된 객체는 어디에 놓을까요?

힙 할당자는 큰 빈 공간을 여러 조각으로 관리하며 요청 크기에 맞는 조각을 골라 줍니다.

먼저 생활 비유

주차장 자리 배정

차 크기에 맞는 빈 구역을 찾아 일부를 배정하고, 차가 나가면 인접한 빈 구역과 다시 합칩니다.

컴퓨터 예제로 바꾸기

배열 24바이트 만들기

items = malloc(24);
free(items);

할당자는 24바이트 이상인 빈 블록을 찾아 분할하고, free 때 빈 목록으로 돌려보냅니다.

직접 움직여 보기1 / 5

지금 일어나는 변화

빈 블록 목록

사용 가능한 힙 조각과 크기를 기록합니다.

주소와 저장 공간주소가 붙은 메모리 공간빈 블록 목록단계 1블록 선택단계 2분할단계 3사용단계 4해제·병합단계 524B 요청현재: 빈 블록 목록

이 그림에서 기억할 한 문장

malloc은 새 메모리를 만드는 것이 아니라 관리 중인 빈 힙 조각을 찾아 주소를 돌려줍니다.

현재 상태

이동하는 것
24B 요청
현재 위치
빈 블록 목록
다음 위치
블록 선택

30초 확인 문제

free의 중요한 역할은?

처음 보는 용어 두 개

힙
실행 중 크기와 수명이 정해지는 객체를 위한 메모리 영역
단편화
빈 공간이 잘게 흩어져 큰 요청을 담기 어려워지는 현상

이 절을 다 읽었다면

malloc은 새 메모리를 만드는 것이 아니라 관리 중인 빈 힙 조각을 찾아 주소를 돌려줍니다.

← 이전 절

3.3 스택은 함수 호출을 어떻게 기억할까?

다음 절 →

3.5 malloc 아래에서 운영 체제는 무엇을 할까?