Сноски

1)  Неизвестно по какой причине, но в Delphi в модуле Windows отсутствует ряд констант, описывающие флаги, используемые при работе с кучей. С другой стороны, в заголовочных файлах от Microsoft, включенных в пакет Visual Studio присутствует ряд дополнительных констант, не описанных в SDK. Я не стал брать на себя риск и описывать эти константы при переводе главным образом по той причине, что мне неизвестно, на каких платформах поддерживаются эти константы, а также всевозможные ньюансы при их использовании. Тем не менее смысл многих констант легко взять из их названия. Ниже идет список этих констант с их значениями:

Константа Значение
HEAP_NO_SERIALIZE $00000001
HEAP_GROWABLE $00000002
HEAP_GENERATE_EXCEPTIONS $00000004
HEAP_ZERO_MEMORY $00000008
HEAP_REALLOC_IN_PLACE_ONLY $00000010
HEAP_TAIL_CHECKING_ENABLED $00000020
HEAP_FREE_CHECKING_ENABLED $00000040
HEAP_DISABLE_COALESCE_ON_FREE $00000080
HEAP_CREATE_ALIGN_16 $00010000
HEAP_CREATE_ENABLE_TRACING $00020000
HEAP_MAXIMUM_TAG $0FFF
HEAP_PSEUDO_TAG_FLAG $8000
HEAP_TAG_SHIFT 18

В Delphi также не описан следующий макрос, относящийся к куче, ниже представлена его реализация в Delphi.

function HEAP_MAKE_TAG_FLAGS(b, o: DWORD): DWORD;
begin
  Result := b + o shl 18;
end;

НазадTProcessHeapEntry Memory SDK Вперед

© Mystic, 2002