Динамическое распределение памяти в MS Windows. Габрельян Б.В. - 20 стр.

UptoLike

Составители: 

BYTE cbOverhead;
BYTE iRegionIndex;
WORD wFlags;
union {
struct {
HANDLE hMem;
DWORD dwReserved[ 3 ];
} Block;
struct {
DWORD dwCommittedSize;
DWORD dwUnCommittedSize;
LPVOID lpFirstBlock;
LPVOID lpLastBlock;
} Region;
};
} PROCESS_HEAP_ENTRY;
Поля:
lpData - указатель на блок в куче.
cbData - размер блока в байтах.
cbOverhead - размер данных, в байтах, используемых системой для управления
информацией об элементе кучи. Эти байты добавляются к cbData байтам данных
блока.
iRegionIndex - дескриптор секции кучи, содержащей блок. Куча состоит из одной
или большего числа секций виртуальной
памяти, каждая из которых имеет свой
уникальный индекс. Функция HeapAlloc время от времени использует функцию
VirtualAlloc для распределения дополнительной памяти при возрастании размера
кучи. Менеджер куч воспринимает эти дополнительные области как отдельные
секции.
wFlags - множество битовых флагов, специфицирующих свойства блока кучи:
PROCESS_HEAP_REGION, PROCESS_HEAP_UNCOMMITTED_RANGE,
PROCESS_HEAP_ENTRY_BUSY, PROCESS_HEAP_ENTRY_MOVEABLE,
PROCESS_HEAP_ENTRY_DDESHARE. См. MSDN.
Block - эта структура имеет смысл, только если установлены оба флага
PROCESS_HEAP_ENTRY_BUSY и PROCESS_HEAP_ENTRY_MOVEABLE в поле
wFlags.
Поля структуры Block:
Поле Описание
hMem Дескриптор распределенного, перемещаемого блока.
dwReserved Зарезервировано; не используется.
Region - эта структура имеет смысл, только если установлен флаг
PROCESS_HEAP_REGION в поле wFlags.
Поля структуры Region:
Поле Описание
dwCommittedSize
задает число байт в свободных блоках, занятых блоки или
управляющих структурах кучи.
dwUnCommittedSize задает число байт, освобожденных на данный момент
в куче.
  BYTE cbOverhead;
  BYTE iRegionIndex;
  WORD wFlags;
  union {
     struct {
        HANDLE hMem;
        DWORD dwReserved[ 3 ];
     } Block;
     struct {
        DWORD dwCommittedSize;
        DWORD dwUnCommittedSize;
        LPVOID lpFirstBlock;
        LPVOID lpLastBlock;
     } Region;
  };
} PROCESS_HEAP_ENTRY;
Поля:
lpData - указатель на блок в куче.
cbData - размер блока в байтах.
cbOverhead - размер данных, в байтах, используемых системой для управления
информацией об элементе кучи. Эти байты добавляются к cbData байтам данных
блока.
iRegionIndex - дескриптор секции кучи, содержащей блок. Куча состоит из одной
или большего числа секций виртуальной памяти, каждая из которых имеет свой
уникальный индекс. Функция HeapAlloc время от времени использует функцию
VirtualAlloc для распределения дополнительной памяти при возрастании размера
кучи. Менеджер куч воспринимает эти дополнительные области как отдельные
секции.
wFlags - множество битовых флагов, специфицирующих свойства блока кучи:
PROCESS_HEAP_REGION, PROCESS_HEAP_UNCOMMITTED_RANGE,
PROCESS_HEAP_ENTRY_BUSY, PROCESS_HEAP_ENTRY_MOVEABLE,
PROCESS_HEAP_ENTRY_DDESHARE. См. MSDN.
Block - эта структура имеет смысл, только если установлены оба флага
PROCESS_HEAP_ENTRY_BUSY и PROCESS_HEAP_ENTRY_MOVEABLE в поле
wFlags.
Поля структуры Block:
          Поле                                   Описание
hMem                    Дескриптор распределенного, перемещаемого блока.
dwReserved              Зарезервировано; не используется.
Region - эта структура имеет смысл, только если установлен флаг
PROCESS_HEAP_REGION в поле wFlags.
Поля структуры Region:
          Поле                                   Описание
                        задает число байт в свободных блоках, занятых блоки или
dwCommittedSize
                        управляющих структурах кучи.
dwUnCommittedSize задает число байт, освобожденных на данный момент в куче.