ВУЗ:
Составители:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 52
- 53
- 54
- 55
- 56
- …
- следующая ›
- последняя »
