NT heap : 기존에 존재하던 Windows Heap 할당 매커니즘이다.
Segment Heap
: Windows 10부터 추가되었으나 많은 프로그램이 NT heap에 최적화되어 상용화되지는 않은 Windows Heap 할당 매커니즘이다.
동일한 크기의 heap이 Back-End Heap으로 여러 번 할당되면
LFH가 해당 크기의 heap 여러 개를 미리 준비한다.
이후 동일한 크기의 heap이 또 할당될 때, LFH는 UserBlock 구조체가 관리하는 Heap을 반환하여 할당한다.
⇒ Back-End heap까지 가지 않아 성능이 향상되고,
동일한 크기의 heap이 연속되어 위치하므로 Heap Fragmentation이 감소한다.
UserBlock 구조체는 UserBlock Header와 많은 수의 Heap Chunk로 구성된다.
UserBlock Header
Signature0xF0E0D0C0이 저장되어있다.BusyBitmap.DataBitmapData를 가리킨다. 임의 주소에 접근하기 위해 이 값을 사용한다.BitmapDataHeap Chunk
Heap Chunk Header가 있고, Heap Chunk Header에는 Chunk Number가 존재한다.Chunk Number는 UserBlock Header와 제일 가까운 Heap Chunk부터 0으로 인덱싱 된다.
[그림 1] UserBlock 구조체의 구조. UserBlock Header는 일부만 나타냄피드백은 언제나 환영합니다