Особенности кучи в Windows 95, Windows NT.

1. В Windows максимальный размер кучи может быть практически равен размеру свободного адресного пространства. По умолчанию выделяется 1 Мб и передаются 2 страницы физической памяти.

2. В Windows поддерживается несколько куч.

3. Кучи Win32 могут расти за пределы первоначально отведенного для них размера. В этом случае kernel32 выделяет дополнительный блок линейного адресного пространства и связывает с ним кучу, то есть образует подкучу.

Каждая куча Win32 поддерживает 4 отдельных списка свободных блоков, чтобы избежать чрезмерной фрагментации.

4. При создании любого процесса ОС автоматически создаёт кучу, которая называется куча, предоставляемая процессу по умолчанию. Куча нужна самой ОС для выполнения функций Win32.

Пример. UNICODE2-х байтная ANSI привычная.

Windows NT, 2000 работают только с UNICODE, поэтому когда вызывается ANSI вариант, то для выполнения этой функции необходимо организовать буфер для перевода ANSI в UNICODE.

HeapCreate   куча 3
GetProcessHeap   куча 1
Process Data Base
HeapCreate   куча 2


 

подкучи

 


подкучи

 


 

 

 


У нас куча 1 создана по умолчанию, а 2 и 3 – это дополнительные кучи, создаваемые процессом. PDB – эта таблица содержит указатели на кучи. ToolHelp – специальный набор функций.