Функция _MemGlobalAlloc

 ↑  ←  Описание функции


_MemGlobalAlloc

Выделяет указанное количество байт из кучи

#include <Memory.au3>
_MemGlobalAlloc($iBytes [, $iFlags = 0])

Параметры

$iBytes Количество байт, которое будет выделено. Если этот параметр равен нулю, а параметр $iFlags равен $GMEM_MOVEABLE, то функция возвращает дескриптор объекта памяти, который помечен как сброшенный.
$iFlags [необязательный] Атрибуты выделенной памяти:
    $GMEM_FIXED - Выделяет фиксированную память. Возвращает указатель.
    $GMEM_MOVEABLE - Выделяет доступную для перемещения память. Блоки памяти никогда не перемещаются в физическую память, но они могут быть перемещены в пределах кучи по умолчанию. Возвращаемое значение является дескриптором объекта памяти.
    Чтобы преобразовывать дескриптор в указатель, используйте функцию _MemGlobalLock(). Это значение не может быть объединено с $GMEM_FIXED.
    $GMEM_ZEROINIT - Инициализирует память заполняя содержимое в 0
    $GHND - Объединяет в себе $GMEM_MOVEABLE и $GMEM_ZEROINIT
    $GPTR - Объединяет в себе $GMEM_FIXED и $GMEM_ZEROINIT

Возвращаемое значение

Успех:Возвращает дескриптор объекта выделенной памяти
Ошибка:Возвращает 0

Примечания

Windows memory management does not provide a separate local heap and global heap. Если эта функция выполнена успешно, она выделяет по крайней мере запрошенный объём памяти. Если фактически выделенный объём больше, чем запрошено, процесс может использовать весь объём. Чтобы определить фактически количество выделенных байт, используйте функцию _MemGlobalSize(). Если куча не содержит достаточно свободного места, чтобы удовлетворить запрос, функция возвращает значение NULL. Память, выделенная с помощью этой функции гарантированно будет выровнена по границе 8 байт. To execute dynamically generated code, use the _MemVirtualAlloc() function to allocate memory and the _Mem_VirtualProtect() function to grant $PAGE_EXECUTE access. Чтобы освободить память, используйте функцию _MemGlobalFree().

См. также

_MemGlobalLock, _MemGlobalSize, _MemVirtualAlloc, _MemGlobalFree

См. также

Искать GlobalAlloc в библиотеке MSDN