Операционные системы. Кручинин А.Ю. - 54 стр.

UptoLike

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

54
4.9 Управление памятью
Для управления памятью в операционной системе Windows предусмотрен ряд
функций.
Функция GlobalAlloc
HGLOBAL GlobalAlloc
(
UINT uFlags,
SIZE_T dwBytes
);
Функция выделяет из глобальной кучи память запрошенного размера.
Параметры:
uFlags маска флагов.
dwBytes размер выделяемой памяти
Возвpащаемое значение:
Идентификатоp выделенного блока глобальной памяти; 0 - если ошибка.
В листинге 19 пример вызова функции Windows для выделения блока памяти
для указателя на целые.
DWORD dwSize = 1024;
UINT uiFlags = 0;
p = (int *)GlobalAlloc(uiFlags, dwSize);
Листинг 19 Выделение памяти с помощью GlobalAlloc
За исключением одной, для каждой функции, начинающейся со слова Global,
существует другая, начинающаяся со слова Local. Эти два набора функций в
Windows идентичны. Два различных слова сохранены для совместимости с
предыдущими версиями Windows, где функции Global возвращали дальние
указатели, а функции Local ближние. Если первый параметр задать нулевым, то
это эквивалентно использованию флага GMEM_FIXED. Такой вызов функции
GlobalAlloc эквивалентен вызову функции malloc.
Следующий пример демонстрирует использование функции изменения
размера блока памяти:
p = (int *)GlobalReAlloc(p, dwSize, uiFlags);
Для определения размера выделенного блока памяти используется функция
GlobalSize:
dwSize = GlobalSize(p);
Функция освобождения памяти:
GlobalFree(p);
Функция GlobalAlloc поддерживает флаг GMEM_MOVEABLE и
комбинированный флаг для дополнительного обнуления блока памяти (описано в
заголовочных файлах Windows):
       4.9 Управление памятью

     Для управления памятью в операционной системе Windows предусмотрен ряд
функций.

       Функция GlobalAlloc
HGLOBAL GlobalAlloc
(
    UINT uFlags,
    SIZE_T dwBytes
);

     Функция выделяет из глобальной кучи память запрошенного размера.
     Параметры:
uFlags – маска флагов.
dwBytes – размер выделяемой памяти
     Возвpащаемое значение:
     Идентификатоp выделенного блока глобальной памяти; 0 - если ошибка.

      В листинге 19 пример вызова функции Windows для выделения блока памяти
для указателя на целые.

DWORD dwSize = 1024;
UINT uiFlags = 0;
p = (int *)GlobalAlloc(uiFlags, dwSize);
                 Листинг 19 – Выделение памяти с помощью GlobalAlloc

      За исключением одной, для каждой функции, начинающейся со слова Global,
существует другая, начинающаяся со слова Local. Эти два набора функций в
Windows идентичны. Два различных слова сохранены для совместимости с
предыдущими версиями Windows, где функции Global возвращали дальние
указатели, а функции Local – ближние. Если первый параметр задать нулевым, то
это эквивалентно использованию флага GMEM_FIXED. Такой вызов функции
GlobalAlloc эквивалентен вызову функции malloc.
      Следующий пример демонстрирует использование функции изменения
размера блока памяти:
p = (int *)GlobalReAlloc(p, dwSize, uiFlags);
     Для определения размера выделенного блока памяти используется функция
GlobalSize:
dwSize = GlobalSize(p);
       Функция освобождения памяти:
GlobalFree(p);
      Функция GlobalAlloc поддерживает флаг GMEM_MOVEABLE и
комбинированный флаг для дополнительного обнуления блока памяти (описано в
заголовочных файлах Windows):
                                                                           54