더북(TheBook)

또한 할당과 해제가 잦아 메모리의 빈 공간이 잘게 나눠집니다. 총합은 충분하지만 관련 데이터가 한데 모이지 못하고 서로 멀리 떨어져 저장될 수 있습니다. 이를 메모리 단편화(memory fragmentation)라고 합니다. 메모리 단편화가 발생하면 지역성의 원리가 적용되지 않아 캐시 미스(cache miss) 확률이 높아집니다. 캐시 미스뿐만 아니라 페이지 폴트(page fault)가 발생해 성능을 악화시킬 수도 있습니다(페이지 폴트는 6.7절에서 다룹니다).

메모리 누수 역시 단점으로 꼽힙니다. 코드 9-1 segment.cpp의 메인 함수에서 다른 함수를 호출하고 그 함수 안에서 힙 세그먼트에 할당을 한 다음 지역 변수 heap_x에 메모리의 주소 값을 저장했다고 가정해 보겠습니다. 호출된 함수의 실행이 끝나기 전에 메모리의 주소 값을 호출한 쪽에 전달하지 않으면 함수 호출이 종료되면서 지역 변수 heap_x가 사라지고 할당된 메모리에는 더 이상 접근할 수 없게 되어 메모리 누수가 발생합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.