русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Подпрограммы динамического распределения памяти


Дата добавления: 2015-06-12; просмотров: 472; Нарушение авторских прав


 

Создать динамическую переменную можно с помощью одной из следующих подпрограмм.

1. Процедура New(var p: <указатель>) выделяет место в динамически распределяемой области памяти, называемой «кучей», для размещения переменной базового типа указателя p и начальный адрес присваивает переменной p.

2. Функция New(<имя ссылочного типа>):pointer выделяет место в динамически распределяемой области памяти для размещения переменной указанного в качестве параметра типа и возвращает адрес выделенной области.

3. Процедура GetMem (var p:pointer; n:word) выделяет в «куче» блок памяти размером n, начальный адрес блока помещает в p. Если ртипизованный указатель, то значением второго параметра должен быть размер базового типа указателя. Для его определения удобно использовать функцию SizeOf(<имя типа>|<выражение>):word, которая возвращает размер своего параметра в байтах.

Если по какой-либо причине место для размещения переменной не может быть выделено, то происходит аварийный останов.

Функция MaxAvail:LongInt возвращает размер максимального свободного блока в «куче». С ее помощью можно проверить, достаточно ли места для размещения динамической переменной. Функция MемAvail:LongInt возвращает суммарный размер всех свободных блоков.

После окончания работы с динамической переменной память, занимаемая этой переменной, должна быть освобождена одной из процедур:

Dispose(var p: <типизованный указатель>)

или

FreeMem(var p: pointer; size:word).

Dispose освобождает память, занимаемую переменной базового типа указателя р. FreeMem освобождает блок памяти размером size байтов с начальным адресом р. В качестве параметра size должен быть указан размер динамической переменной. Каждому обращению к подпрограмме выделения памяти должна соответствовать процедура освобождения памяти.

 



<== предыдущая лекция | следующая лекция ==>
Ссылочный тип данных | Работа с динамическими переменными


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.378 сек.