이 게시물은 이전의 게시물을 바탕으로 사용자 정의 메모리 할당으로 메모리 조각화를 해결합니다. 핵심 문제는 작은 블록을 반복적으로 할당하고 자유롭게하면 메모리의 많은 작고 사용할 수없는 갭이 생성되어 충분한 총 여유 공간이 존재하는 경우에도 더 큰 할당을 방지한다는 것입니다. 이 기사는 솔루션을 자세히 설명합니다 : 인접한 무료 블록 병합
문제 : 메모리 조각화
.
솔루션 : 인접한 자유 블록 병합
: 블록 바로 뒤에 메모리 위치로 포인터를 반환합니다. : 이전 블록이 무료인지 확인합니다
: 다음 블록이 무료인지 확인합니다.새로운 함수 인 는 솔루션의 핵심입니다. 인접한 프리 블록을 식별하고 합병하여 크기와 포인터를 그에 따라 업데이트합니다. 이 함수는 마지막 블록 병합과 같은 에지 케이스를 처리합니다.
솔루션을에 통합합니다 함수는 메모리를 풀기 전에 호출하도록 수정됩니다. 이렇게하면 메모리가 시스템으로 다시 해제되기 전에 인접한 프리 블록이 결합되도록합니다. 결론 및 다음 단계
개선 된
함수는 도우미 함수와 함께 메모리 조각화를 크게 줄입니다. 저자는 한 가지 최종 과제가 남아 있다고 지적합니다. 다음 게시물에서 다룰 메모리 블록 정렬. 완전하고 업데이트 된
위 내용은 malloc () 및 free () 구현 - 작은 블록 병합의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!