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

UptoLike

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

возвращает NULL.
HEAP_NO_SERIALIZE
Используется, чтобы отменить сериализацию, при
одновременном доступе нескольких потоков к
куче.
dwInitialSize - начальный размер кучи в байтах, значение выравнивается по границе
следующей страницы.
dwMaximumSize - если значение этого параметра больше нуля, то он задает
максимальный размер кучи (с учетом выравнивания на границу страницы). Кроме
того, максимальный размер захватываемого в этой
куче блока должен быть
немного меньше чем 0x7FFF8 байт, даже если максимальный размер кучи больше
этой величины. Если dwMaximumSize равен нулю, куча может менять свой
максимальный размер. Ограничение - только общий размер доступной памяти.
Запрос блока, размер которого больше чем 0x7FFF8 байт приводит к вызову
VirtualAlloc для захвата такого блока памяти. Возвращаемые значения:
В
случае успеха - дескриптор новой кучи. В случае неуспеха - NULL.
14. HeapDestroy
Функция HeapDestroy освобождает память занятую "кучей" и ее дескриптор
становится недействительным.
BOOL HeapDestroy(
HANDLE hHeap // дескриптор кучи
);
Возвращаемые значения:
В случае успеха возвращает не нулевое значение, в противном случае - ноль.
15. HeapAlloc
Функция HeapAlloc распределяет фиксированный (не перемещаемый) блок памяти
из кучи.
LPVOID HeapAlloc(
HANDLE hHeap, // дескриптор кучи
DWORD dwFlags, // флаги распределения
DWORD dwBytes // размер лока в байтах
);
Параметры:
hHeap - дескриптор кучи, возвращенный прежде функцией HeapCreate или
функцией GetProcessHeap.
dwFlags - флаги распределения, которые могут перекрывать флаги заданные при
создании кучи:
Флаг Значение
HEAP_GENERATE_EXCEPTIONS
При возникновении
ошибки функция не будет
возвращать NULL, но выбрасывается
исключение, подобное "out-of-memory".
HEAP_NO_SERIALIZE
Не использовать "mutual exclusion" при доступе к
куче нескольких потоков одновременно. Нельзя
использовать для стандартной кучи.
HEAP_ZERO_MEMORY Инициализировать выделенный блок нулями.
                                     возвращает NULL.
                                     Используется, чтобы отменить сериализацию, при
HEAP_NO_SERIALIZE                    одновременном доступе нескольких потоков к
                                     куче.
dwInitialSize - начальный размер кучи в байтах, значение выравнивается по границе
следующей страницы.
dwMaximumSize - если значение этого параметра больше нуля, то он задает
максимальный размер кучи (с учетом выравнивания на границу страницы). Кроме
того, максимальный размер захватываемого в этой куче блока должен быть
немного меньше чем 0x7FFF8 байт, даже если максимальный размер кучи больше
этой величины. Если dwMaximumSize равен нулю, куча может менять свой
максимальный размер. Ограничение - только общий размер доступной памяти.
Запрос блока, размер которого больше чем 0x7FFF8 байт приводит к вызову
VirtualAlloc для захвата такого блока памяти. Возвращаемые значения:
В случае успеха - дескриптор новой кучи. В случае неуспеха - NULL.

14. HeapDestroy
Функция HeapDestroy освобождает память занятую "кучей" и ее дескриптор
становится недействительным.
BOOL HeapDestroy(
 HANDLE hHeap // дескриптор кучи
);
Возвращаемые значения:
В случае успеха возвращает не нулевое значение, в противном случае - ноль.

15. HeapAlloc
Функция HeapAlloc распределяет фиксированный (не перемещаемый) блок памяти
из кучи.
LPVOID HeapAlloc(
 HANDLE hHeap, // дескриптор кучи
 DWORD dwFlags, // флаги распределения
 DWORD dwBytes // размер лока в байтах
);
Параметры:
hHeap - дескриптор кучи, возвращенный прежде функцией HeapCreate или
функцией GetProcessHeap.
dwFlags - флаги распределения, которые могут перекрывать флаги заданные при
создании кучи:
               Флаг                                  Значение
                                  При возникновении ошибки функция не будет
HEAP_GENERATE_EXCEPTIONS возвращать              NULL,      но      выбрасывается
                                  исключение, подобное "out-of-memory".
                                  Не использовать "mutual exclusion" при доступе к
HEAP_NO_SERIALIZE                 куче нескольких потоков одновременно. Нельзя
                                  использовать для стандартной кучи.
HEAP_ZERO_MEMORY                  Инициализировать выделенный блок нулями.