링커, 로더, 실행 파일
malloc과 free를 반복하는 사이에, 빈 메모리의 합계는 충분한데도 큰 영역을 한꺼번에 확보하지 못하게 되는 경우가 있다. 이 현상을 무엇이라고 하는가?
- A메모리 누수
- B단편화(프래그멘테이션)
- C스택 오버플로
정답과 해설 보기
정답: B. 단편화(프래그멘테이션)
크기가 다른 영역의 확보와 해제를 반복하면 사용 중인 영역 사이에 작은 빈 공간이 흩어집니다. 빈 공간의 합계가 크더라도 이어진 큰 빈 공간이 없으면 큰 확보는 실패합니다. 이를 단편화라고 합니다. 메모리 할당기는 크기별로 나누어 관리하거나 이웃한 빈 공간을 합치는 등으로 단편화를 줄입니다. 오래 동작을 계속하는 임베디드 기기에서는 특히 주의가 필요합니다.
- A. 메모리 누수는 해제를 잊어서 쓸 수 있는 메모리가 줄어드는 것입니다.
- B. 올바릅니다. 빈 공간이 잘게 나뉘어 버린 상태입니다.
- C. 스택 오버플로는 스택의 상한을 넘는 것입니다.