Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ахмадулин Р.К. технологии программирования.doc
Скачиваний:
9
Добавлен:
10.11.2019
Размер:
615.94 Кб
Скачать

Выделение и освобождение динамической памяти

Указатели – это лишь адрес ячейки памяти, а о состоянии самой ячейки должен позаботиться программист.

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

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

Процедура New(P) резервирует в памяти участок для значения того типа, на который ссылается указатель P, и устанавливает в указатель адрес зарезервированного участка.

Пример:

var

P1: ^Integer;

...

New(P1);

P1^:=5;

Процедура Dispose(P) освобождает участок памяти, на которую указывает типизированный указатель P.

Пример:

Dispose(P1);

P1:=nil;

Процедуры New и Dispose применимы только для типизированных указателей. При работе с нетипизированными указателями можно воспользоваться следующими процедурами.

Процедура GetMem(P, Size) выделяет из кучи блок памяти размером Size (максимум 64 Кбайта) и устанавливает в указатель P ссылку на неё.

Процедура FreeMem(P, Size) уничтожает в куче блок памяти размером Size по адресу P.

Вопросы для самопроверки

1. Что такое указатель в языке Паскаль?

2. В чем различие типизированных и нетипизированных указателей?

3. Какие операции над типизированными указателями Вы знаете?

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

5. В каких случаях при обращении к указателю необходимо выполнить операцию разыменования?

Рекомендуемая литература

  1. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс: Учебное пособие. – М.: Нолидж, 1998. – 613 с.

  2. Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. – М.: Нолидж, 1997. – 430 с.

  3. Пильщиков В.Н. Сборник упражнений по языку Паскаль: Учебное пособие для вузов. – М.: Наука, 1989.

  4. Васильев П.П. Турбо Паскаль в примерах и задачах. Освой самостоятельно: Учебное пособие. – М.: Финансы и статистика, 2002. –496 с.

  5. Джонс Ж. Решение задач в системе Турбо Паскаль: Пер.с англ. – М.: Финансы. – 720 с.

  6. Немнюгин С.А. Turbo Pascal. Программирование на языке высокого уровня: Учебник для студентов вузов, обучающихся по направлению подготовки дипломированных специалистов «Информатика и вычислительная техника». – М.; СПб.; Нижний Новгород: Питер, 2005. – 544с.

  7. Аляев Ю.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие для курсантов военно-учебных заведений и училищ, студентов технических вузов. – М: Финансы и статистика, 2002. – 320с.

  8. Мизрохи С.В. TURBO PASCAL и объективно-ориентированное программирование. – М.: Финансы и статистика, 1992. – 192 с.

  9. Попов В.Б. Паскаль и Дельфи: Учебный курс. – М.; СПб.; Нижний Новгород: ПИТЕР, 2005. – 576с.

Ахмадулин Руслан Камильевич

Технология программирования

Учебное пособие

Редактор: Г.Б. Мальцева

Подписано к печати

Заказ

Формат 60 / 90 1 /16

Отпечатано на RISO GR 3750

Бум. ГОЗНАК

Уч. изд. л.

Усл.печ.л.

Тираж 100 экз.

Издательство «Нефтегазовый университет»

Государственного образовательного учреждения высшего профессионального образования

«Тюменский государственный нефтегазовый университет»