Получение блока памяти из пула
Для получения памяти из стандартного или динамического пула приложение должно воспользоваться функцией HeapAlloc, прототип которой мы привели ниже:
LPVOID HeapAlloc(
HANDLE hHeap, // идентификатор пула
DWORD dwFlags, // управляющие флаги
DWORD dwBytes); // объем получаемой памяти в байтах
Что касается параметра hHeap, то для него вы можете использовать либо идентификатор страндартного пула памяти, полученного от функции GetProcessHeap, либо идентификатор динамического пула, созданного приложением при помощи функции HeapCreate.
Параметр dwBytes определяет нужный приложению объем памяти в байтах.
Параметр dwFlags может быть комбинацией следующих значений:
Значение | Описание | ||
HEAP_GENERATE_EXCEPTIONS | Если при выполнении функции произойдет ошибка, возникнет исключение | ||
HEAP_NO_SERIALIZE | Если указан этот флаг, не выполняется блокировака одновременного обращения к блоку памяти нескольких задач одного процесса | ||
HEAP_ZERO_MEMORY | Выделенная память заполняется нулями |