Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OAP(теория).doc
Скачиваний:
49
Добавлен:
15.02.2016
Размер:
687.62 Кб
Скачать

17. Процедуры работы с памятью. Приведите примеры.

Addr

Возвращает указатель на объект.

AllocMem

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

CompareMem

Выполняет бинарное сравнение двух участков памяти.

GetHeapStatus

Возвращает текущее состояние диспетчера памяти.

GetMemoryManager

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

IsMemoryManagerSet

Определяет, используется в настоящий момент диспетчер памяти, установленный по умолчанию, или был установлен другой диспетчер.

Ptr

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

SizeOf

Возвращает размер памяти, занимаемый переменной.

SetMemoryManager

Устанавливает значения полей диспетчера памяти.

SysFreeMem

Высвобождает память, используемую динамической переменной.

SysGetMem

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

SysReallocMem

Изменяет размер динамически распределенного блока памяти.

18. Особенности работы процедур GetMem, BlockRead, функция FileSize .

1.Процедура GetMem пытается получить указанные в StorageSize байт памяти, сохраняя указатель на память в StoragePointer. Если при распределении произошли сбои, то вызывается исключение EOutOfMemory. Память не всегда инициализируется.

Примечания

Процедура GetMem потоко безопасна, пока IsMultiThread истинено. Для распределения памяти для записей лучше использовать New - пример используется для иллюстрации GetMem и манипуляции указателем.

2.Процедура BlockRead используется для чтения RecordCount записей данных в Buffer из нетипизированного двоичного файла, данного FileHandle.  Файл, должно быть, был назначен, используя AssignFile и открыт с помощью Reset.  Подпрограмма Reset по умолчанию открывает файл с размером записи равной 128 байт. Этот размер может быть изменён в этой подпрограмме в значение, более полезное для вас (см. пример).  Данные записываются в Buffer(обычно строка или byte массив) из файла. Если recordSize 10 байт, иRecordCount 3, то 3 записи по 10 байт будут занимать 30 байт, взятыми из файла.  Фактический число считанных записей сохраняется в дополнительной переменнойRecordsRead. Она будет меньше чем RecordCount, если, например, был достигнут конец файла.

3.Функция FileSize выдает размер открытого файла в записях.  Прежде, чем эта функция может использоваться, файл должен быть назначен дескриптору, используяAssignFile и открыт используя подпрограммы Append, Reset илиReWrite.

19. Особенности работы процедуры new

Процедура New выходила в 2-х версиях.  Старшая версия - устаревший метод создания объектов (теперь вы можете вызывать, вместо этого, конструктор класса).  Первая версия размещает память в переменную типа указателяVariablePointer. New используется, когда память требует фиксированного размера. Используйте GetMem, чтобы указать точный ассигнованный размер для хранения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]