Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Pascal и Delphi / Иллюстрированный самоучитель по Delphi 6 / Часть II . Язык Object Pascal / Типы данных /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Указатели и динамическая память - Программирование от RIN.RU
Указатели и динамическая память



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


В таблице 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Заполняет блок памяти нулями

<<<  Назад
 1  2  3 


 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь