Главная. Учебники по программам для графики и дизайна!! Главная страница сайта.

 

7.4.4. Процедуры и функции для работы с динамической памятью

В табл. 7.14 приводится описание как уже рассмотренных процедур и функций Object Pascal, так и некоторых других, которые могут оказаться полезными при обращении к динамической памяти.

Таблица 7.14. Средства Object Pascal для работы с памятью

Function Addr(X):

Pointer;

Возвращает адрес аргумента X. Аналогичный результат возвращает операция @

Procedure Dispose (var P: Pointer) ;

Возвращает в кучу фрагмент динамической памяти, который ранее был зарезервирован за типизированным указателем P

Procedure Free-Mem(var P: Pointer; Size: Integer) ;

Возвращает в кучу фрагмент динамической памяти, который ранее был зарезервирован за нетипизированным указателем Р 

 

Procedure Get-Mem(var P: Pointer; Size: Integer) ;

Резервирует за нетипизированным указателем Р фрагментдинамической памяти требуемого размера Size  

Procedure New(var P: Pointer) ;

Резервирует фрагмент кучи для размещения переменной и помещает в типизированный указатель Р адрес первого байта

Function SizeOf(X): Integer;

Возвращает длину в байтах внутреннего представления указанного объекта Х

 

Windows имеет собственные средства работы с памятью. В табл. 7.15 перечислены соответствующие API-функции и даны краткие пояснения. За более полной информацией обращайтесь к справочной службе в файлах WIN32. hlp или WIN32S. hlp.

Таблица 7.15. Средства Windows для работы с памятью

CopyMemory

 

Копирует содержимое одного блока памяти в другой блок.

Блоки не должны перекрываться хотя бы частично

FillMemory

Заполняет блок памяти указанным значением

GetProcessHeap

Возвращает дескриптор кучи для текущей программы

GetProcessHeaps

Возвращает дескрипторы куч для всех работающих программ

GlobalAlloc

Резервирует в куче блок памяти требуемого размера

GlobalDiscard

Выгружает блок памяти

GlobalFlags

Возвращает информацию об указанном блоке памяти

GlobalFree 

Освобождает блок памяти и возвращает его в общий пул памяти

GlobalHandle 

Возвращает дескриптор блока памяти, связанного с заданным указателем

GlobalLock

Фиксирует блок памяти и возвращает указатель на его первый байт

GlobalMemoryStatus

 

Возвращает информацию о доступной памяти (как физической, так и виртуальной)

GlobalReAlloc  

Изменяет размер и атрибуты ранее зарезервированного блока памяти

GlobalSize

Возвращает размер в байтах блока памяти

GlobalUnlock

Снимает фиксацию блока памяти и делает его перемещаемым

HeapAlloc

Резервирует в куче неперемещаемый блок памяти

HeapCompact

Удаляет фрагментацию кучи

HeapCreate

Создает для программы новую кучу

HeapDestroy

Возвращает кучу в общий пул памяти

HeapFree

 

Освобождает блок памяти, зарезервированный функциями

HeapAlloc или HeapReAlloc

HeapLock

Делает указанную кучу доступной только для текущего потока

HeapReAlloc

Изменяет размер и/или свойства кучи

HeapSize

Возвращает размер кучи в байтах

HeapUnlock 

Делает указанную кучу доступной для любых потоков текущего процесса

HeapValidate

Проверяет состояние кучи или размещенного в ней блока памяти

IsBadCodePtr 

 

Сообщает, может ли вызывающая программа читать данные из указанного адреса памяти (но не из блока памяти)

IsBadHugeReadPtr

 

Сообщает, может ли вызывающая программа читать данные из указанного блока памяти

IsBadHugeWritePtr 

Сообщает, может ли вызывающая программа изменять содержимое указанного блока памяти

IsBadReadPtr

Сообщает, может ли вызывающая программа читать данные из указанного блока памяти

IsBadStringPtr

Сообщает, может ли программа читать содержимое строки, распределенной в куче

IsBadWritePtr

Сообщает, может ли вызывающая программа изменять содержимое указанного блока памяти

LocalAlloc

Аналогична GlobalAlloc

:: LocalDiscard

Аналогична GloalDiscard

'LocalFlags

Аналогична GlobalFlags

LocalFree

Аналогична Global Free

LocalHandle

Аналогична GlobalHandle

LocalLock

Аналогична GlobalLock

LocalReAlloc

Аналогична GlobalReAlloc

LocalSize

Аналогична GlobalSize

LocalUnlock

Аналогична GlobalUnlock

MoveMemory 

Копирует один блок памяти в другой. Блоки могут перекрываться

VirtualAlloc

Резервирует блок виртуальной памяти

VirtualFree

Освобождает блок виртуальной памяти

VirtualLock

Фиксирует блок виртуальной памяти

VirtualProtect 

Изменяет права доступа текущей программы к виртуальному блоку памяти

VirtualProtectEx

Изменяет права доступа указанной программы к виртуальному блоку памяти

VirtualQuery 

Возвращает свойства виртуального блока памяти по отношению к вызывающей программе

VirtualQueryEx

Возвращает свойства виртуального блока памяти по отношению к указанной программе

VirtualUnloc'k

Снимает фиксацию блока виртуальной памяти

ZeroMemory

Заполняет блок памяти нулями

 

Hosted by uCoz
Google Scholar
Web Informer Button Web Informer Button