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
Signature
0xF0E0D0C0
이 저장되어있다.BusyBitmap.Data
BitmapData
를 가리킨다. 임의 주소에 접근하기 위해 이 값을 사용한다.BitmapData
Heap Chunk
Heap Chunk Header
가 있고, Heap Chunk Header에는 Chunk Number
가 존재한다.Chunk Number
는 UserBlock Header와 제일 가까운 Heap Chunk부터 0으로 인덱싱 된다. [그림 1] UserBlock 구조체의 구조. UserBlock Header는 일부만 나타냄피드백은 언제나 환영합니다