Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_Delphi_1.doc
Скачиваний:
15
Добавлен:
18.09.2019
Размер:
1.64 Mб
Скачать

10.Динамическая память Подготовка к работе

  1. По рекомендуемой литературе изучить:

  • назначение динамической памяти,

  • назначение и свойства указателей,

  • операции с динамическими структурами,

  • фрагментацию данных в динамической памяти.

  1. Составить программы решения задач.

Контрольные вопросы

  1. Что такое динамическая память?

  2. Назначение и свойства указателей.

  3. Типизированные указатели.

  4. Указатель Pointer.

  5. Процедура выделения New(p) динамической памяти для типизированных структур.

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

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

  8. Процедура освобождения FreeMem(p,size) динамической памяти для структур произвольного размера.

Задание к работе

  1. Программа демонстрации работы с типизированными динамическими структурами. Создать динамические структуры ds1 и ds2, выполнить над ними операцию op, после чего освободить память для указанных структур в порядке, обратном выделению. Проект – консольное приложение.

  2. Программа скоростного копирования файла произвольного размера (файл prg_8_1.exe) из папки 08_01 в папку 10_02 с использованием ДП и процедур GetMem и FreeMem.

Варианты заданий представлены в табл. 10 .9.

табл. 10.9. Варианты заданий

ds1

ds2

op

1

Word

Real

сложение

2

Real

Integer

умножение

3

Integer

byte

вычитание

4

byte

Word

деление

5

Word

Real

сложение

6

Real

Integer

умножение

7

Integer

byte

вычитание

8

byte

Word

деление

9

Real

Real

сложение

10

Integer

Integer

умножение

11

byte

byte

вычитание

12

Word

Word

деление

13

Real

Real

сложение

14

Integer

Integer

умножение

15

byte

byte

вычитание

Пример выполнения

Задание 1

Создать динамические структуры типов byte и word, выполнить над ними операцию сложения, после чего освободить память для указанных структур в порядке, обратном выделению. Проект – консольное приложение. Окно работающего приложения задания 1 показано на рис. 10 .23.

Листинг программы:

program Prg_10_1;

{$APPTYPE CONSOLE}

uses

SysUtils,RusTrans;

var

p1:^Byte=Nil; //Указатели с инициализацией

p2:^Word=Nil;

Result:real;

begin

writeln(Rus('Объект p1'));

new(p1); // Выделить ДП под p1

writeln(Rus(' Размер p1='),SizeOf(p1));

writeln(Rus(' Размер p1^='),SizeOf(p1^));

writeln(Rus('Объект p2'));

new(p2); // Выделить ДП под p2

writeln(Rus(' Размер p2='),SizeOf(p2));

writeln(Rus(' Размер p2^='),SizeOf(p2^));

writeln;

writeln(Rus('Введите операнды'));

write(' a=');

readln(p1^); //Присвоить значение р1

write(' b=');

readln(p2^); //Присвоить значение р2

Result:=p1^+p2^; //Операция с р1 и р2}

writeln('p1^=',p1^);

writeln('p2^=',p2^);

writeln(Rus('Результат операции = '),Result:5:2);

readln;

Dispose(p2); //Освободить ДП под р2

p2:=Nil;

Dispose(p1); //Освободить ДП под р1

p1:=Nil;

writeln;

write('p1=');

if p1=Nil then writeln('Nil'); // Указатель p2 пуст

write('p2=');

if p2=Nil then writeln('Nil'); // Указатель p2 пуст

readln;

end.

рис. 10.23. Окно работающего приложения задания 1

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