+ Запрашивать информацию о страницах виртуальной памяти.
* Изменять защиту доступа для выделенных страниц виртуальной памяти.
Поскольку виртуальная память распределяется постранично, ее невыгодно использовать для хранения небольших объектов памяти. В среде Win32 предусмотрен лучший способ распределения небольших объемов памяти — функция HeapAlloc.
Функция |
Назначение |
AllocateUserPhysicalPages |
Распределяет страницы физической памяти для использования в адресных расширениях работы с окнами (AWE — Address Windowing Extension) |
CopyMemory |
Копирует блок памяти из одного места в другое |
FillMemory |
Заполняет блок памяти указанным значением |
FreeUserPhysicalPages |
Освобождает страницы физической памяти, которые были ранее распределены с применением функции AllocateUserPhysicalPages |
GlobalAlloc |
Распределяет блок памяти в глобальной куче |
GlobalDiscard |
Удаляет блок памяти из глобальной кучи |
GlobalFlags |
Определяет, блокирован ли блок памяти в глобальной куче, отброшен или может быть отброшен |
GlobalFree |
Освобождает блок памяти, распределенный в глобальной куче |
GlobalHandle |
Возвращает дескриптор глобального блока памяти, если дан адрес этого блока |
GlobalLock |
Блокирует распределенный блок памяти в глобальной куче |
GlobalMemoryStatus |
Выбирает информацию о доступной физической и виртуальной памяти |
Куча
Функции кучи позволяют процессу создавать приватную кучу — блок из одной или нескольких страниц в адресном пространстве процесса. Функция HeapCreate создает кучу указанного размера, а функции НеарАНос и HeapFree распределяют и освобождают память в куче. Не существует разницы между памятью, распределенной из приватной кучи, и памятью, распределенной с использованием функции GlobalAlloc.
Объекты кучи могут расти динамически в пределах диапазона, указанного при вызове функции HeapCreate. Максимальный размер кучи определяет число зарезервированных страниц памяти. Начальный размер определяет число выделенных страниц, предназначенных для чтения/записи, которые были первоначально выделены для кучи. Дополнительные страницы автоматически выделяются из зарезервироранного пространства, если запросы функции НеарАНос превышают текущий объем выделенных страниц. Выделение страниц не отменяется до тех пор, пока процесс не закончит свою работу или куча не будет уничтожена с помощью функции HeapDestroy. Поскольку память, распределенная в куче с помощью функции НеарАНос, является неподвижной и система не может уплотнить кучу, приложение должно быть написано так, чтобы фрагментация кучи была минимальной.
Память в приватной куче доступна только для процесса, создавшего кучу. Если приватную кучу создает динамически загружаемая библиотека (DLL — dynamic link library), эта куча создается в адресном пространстве и доступна только процессу, который вызвал DLL.
Описание функций управления памятью
В табл. 11.1 приведены функции управления памятью. За таблицей следует подробное описание функций.
Таблица 11.1. Функции управления памятью ____ ______
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.