Объяснение GlobalAlloc - PullRequest
       1

Объяснение GlobalAlloc

1 голос
/ 10 ноября 2010
(char*)GlobalAlloc(GPTR, len + 1);

Это строка кода, которую я использую из учебника. Я читаю с EDITTEXT. В основном я хотел бы знать, откуда взялась GPTR и для чего она нужна. Он не был определен где-либо еще в коде.

У меня есть базовое понимание остальной части строки, но объяснение MSDN не совсем понятно. Они говорят это:

HGLOBAL WINAPI GlobalAlloc(
  __in  UINT uFlags,
  __in  SIZE_T dwBytes
);

Может ли кто-нибудь объяснить простым языком, откуда взято GPTR, для чего оно и как оно относится к __in UINT uFlags? Я знаю, что это unsigned int, но тогда знание останавливается.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 10 ноября 2010

GPTR - это комбинация GMEM_FIXED и GMEM_ZEROINIT (ИЛИ).

uFlags
Атрибуты выделения памяти.Если указан ноль, по умолчанию используется GMEM_FIXED.Этот параметр может быть одним или несколькими из следующих значений, за исключением специально отмеченных несовместимых комбинаций.

Значение Значение
GHND 0x0042 Объединяет GMEM_MOVEABLE и GMEM_ZEROINIT.
GMEM_FIXED 0x0000 Распределяет фиксированную память.Возвращаемое значение - указатель.
GMEM_MOVEABLE 0x0002 Распределяет подвижную память.Блоки памяти никогда не перемещаются в физической памяти, но их можно перемещать в куче по умолчанию.Это значение нельзя комбинировать с GMEM_FIXED.
GMEM_ZEROINIT 0x0040 Инициализирует содержимое памяти до нуля.
GPTR 0x0040 Объединяет GMEM FIXED и GMEM_ZEROINIT.

0 голосов
/ 10 ноября 2010

См. здесь

GPTR 0x0040 Объединяет GMEM_FIXED и GMEM_ZEROINIT.

Как видите, это всего лишь битовая комбинация (0x0040), которую можно комбинировать с другимидопустимые флаги

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...