Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru

V. ФУНКЦИИ И ПРОЦЕДУРЫ ДЛЯ РАБОТЫ С ПАМЯТЬЮ

1. Функции и процедуры для работы с памятью и указателями.


Процедура SetMemoryManager( const MemMgr: TMemoryManager );

Модуль: System

type TMemoryManager = record
   GetMem: function( Size: Integer): Pointer;
   FreeMem: function( P: Pointer): Integer;
   ReallocMem: function( P: Pointer; Size: Integer): Pointer;
end;

Описание
Процедура устанавливает значения полей диспетчера памяти. Три функции, определенные в параметре MemMgr могут быть использованы в качестве альтернативы следующим процедурам управления памятью:
- стандартным процедурам GetMem, ReallocMem, FreeMem;
- стандартным процедурам New и Dispose;
- распределению и высвобождению памяти с помощью конструкторов и деструкторов;
- распределению и высвобождению памяти под динамические строки.

Поле GetMem параметра MemMgr должно указывать на функцию, которая распределяет указанный объем памяти и возвращает указатель на данный блок памяти. Значение параметра Size, относящегося к функции GetMem не может быть равным нулю. В случаях, когда функция GetMem не сможет распределить блок памяти заданного размера, она должна возвращать nil.
Поле FreeMem параметра MemMgr должно указывать на функцию, которая высвобождает память из-под указанной динамической переменной. Значение указателя, переданного данной функции не может иметь значение nil. В случае успешного высвобождения указанного участка памяти, функция должна возвратить 0, иначе в качестве результата должно быть возвращено не нулевое значение.
Поле ReallocMem параметра MemMgr должно указывать на функцию, которая перераспределяет размер указанного блока памяти к значению, определенному в параметре Size. Для данной функции должно выполняться следующее условие P<>nil, Size<>0. При невозможности перераспределения размера блока памяти в текущем адресном пространстве, функция ReallocMem должна переместить его на новое место. Любые данные, находящиеся в данном блоке памяти должны сохраниться. Новый дополнительно выделенный объем памяти может оставаться не инициализированным. Функция должна вернуть указатель на перераспределенный блок памяти, а если перераспределение невозвможно, то в качестве результа должно вернуться значение nil.

Пример
См. пример к функции GetMemoryManager.


[ Оглавление ]









helloworld.ru © 2001-2021
Все права защищены