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

UptoLike

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

dwBytes - число байт в блоке.
Возвращаемые значения:
В случае успеха возвращает указатель на распределенный блок, иначе, если не
задан флаг HEAP_GENERATE_EXCEPTIONS, возвращает NULL. Если возникла
ошибка и флаг HEAP_GENERATE_EXCEPTIONS задан, могут генерироваться
следующие исключения:
Код Значение
STATUS_NO_MEMORY Недостаточно памяти или куча повреждена.
STATUS_ACCESS_VIOLATION
Повреждена куча или заданы неправильные
параметры.
16. HeapReAlloc
Функция HeapReAlloc перераспределяет блок в куче, позволяя менять его размер
или свойства. Новый блок будет фиксированным (not movable).
LPVOID HeapReAlloc(
HANDLE hHeap, // дескриптор кучи
DWORD dwFlags, // флаги нового блока
LPVOID lpMem, // указатель на старый (подлежащий изменению) блок
DWORD dwBytes // новый размер блока
);
Возможно задание следующих флагов:
HEAP_GENERATE_EXCEPTIONS, HEAP_NO_SERIALIZE,
HEAP_ZERO_MEMORY и HEAP_REALLOC_IN_PLACE_ONLY. Последний
указывает, что если новый блок
больше старого, то его нельзя перемещать в
памяти. Если это невозможно работа функции завершается ошибкой, а старый блок
не меняется.
Возвращаемые значения:
В случае успеха возвращает указатель на новый блок, иначе, если не задан флаг
HEAP_GENERATE_EXCEPTIONS, то возвращает NULL, а, если задан,
генерируется исключение STATUS_NO_MEMORY или
STATUS_ACCESS_VIOLATION.
17. HeapFree
Функция HeapFree освобождает блок, распределенный в куче с помощью
HeapAlloc или HeapRealloc.
BOOL HeapFree(
HANDLE hHeap, // дескриптор кучи
DWORD dwFlags, // флаги
LPVOID lpMem // указатель на освобождаемый блок
);
Может быть указан только один флаг: HEAP_NO_SERIALIZE.
18. HeapSize
Функция HeapSize возвращает размер в байтах блока, распределенного прежде с
помощью HeapAlloc или HeapRealloc.
DWORD HeapSize(
dwBytes - число байт в блоке.
Возвращаемые значения:
В случае успеха возвращает указатель на распределенный блок, иначе, если не
задан флаг HEAP_GENERATE_EXCEPTIONS, возвращает NULL. Если возникла
ошибка и флаг HEAP_GENERATE_EXCEPTIONS задан, могут генерироваться
следующие исключения:
                Код                                 Значение
STATUS_NO_MEMORY                 Недостаточно памяти или куча повреждена.
                                 Повреждена куча или заданы неправильные
STATUS_ACCESS_VIOLATION
                                 параметры.

16. HeapReAlloc
Функция HeapReAlloc перераспределяет блок в куче, позволяя менять его размер
или свойства. Новый блок будет фиксированным (not movable).
LPVOID HeapReAlloc(
 HANDLE hHeap, // дескриптор кучи
 DWORD dwFlags, // флаги нового блока
 LPVOID lpMem, // указатель на старый (подлежащий изменению) блок
 DWORD dwBytes // новый размер блока
);
Возможно задание следующих флагов:
HEAP_GENERATE_EXCEPTIONS,                              HEAP_NO_SERIALIZE,
HEAP_ZERO_MEMORY и HEAP_REALLOC_IN_PLACE_ONLY. Последний
указывает, что если новый блок больше старого, то его нельзя перемещать в
памяти. Если это невозможно работа функции завершается ошибкой, а старый блок
не меняется.
Возвращаемые значения:
В случае успеха возвращает указатель на новый блок, иначе, если не задан флаг
HEAP_GENERATE_EXCEPTIONS, то возвращает NULL, а, если задан,
генерируется          исключение         STATUS_NO_MEMORY                 или
STATUS_ACCESS_VIOLATION.

17. HeapFree
Функция HeapFree освобождает блок, распределенный в куче с помощью
HeapAlloc или HeapRealloc.
BOOL HeapFree(
 HANDLE hHeap, // дескриптор кучи
 DWORD dwFlags, // флаги
 LPVOID lpMem // указатель на освобождаемый блок
);
Может быть указан только один флаг: HEAP_NO_SERIALIZE.

18. HeapSize
Функция HeapSize возвращает размер в байтах блока, распределенного прежде с
помощью HeapAlloc или HeapRealloc.
DWORD HeapSize(