Основы программирования на языке Turbo Pascal. Беляева И.В. - 243 стр.

UptoLike

Составители: 

243
Замечание:
Работа с динамической памятью является одной из сложнейших тем
в программировании. Поэтому, если Вы разберетесь в ней и научитесь на
практике использовать динамическую память, то этим Вы сделаете весьма
большой шаг к профессиональному уровню программирования.
В заключении описания работы с динамической памятью перечислим
типичные ошибки:
1) Потеря динамической памяти. Может произойти в том случае,
когда память была выделена, но не была освобождена.
var
P:Pointer;
begin
GetMem(P,100); {выделили 100 байт}
GetMem(P,200); {выделили еще 200 байт}
FreeMem(P,200); {освободили 200 байт – 100 байт освободить уже не
удастся... – ОШИБКА}
end.
2) Многократное освобождение одной и той же динамической памяти.
var
pw:PWorker;
begin
New(pw); {выделили память под переменную типа TWorker}
Dispose(pw); {освободили память из-под переменной типа TWorker}
Dispose(pw); {попытались еще раз освободить эту же память}
end.
3) Память не выделялась, но освобождается.
var
PL:^LongInt;
L:LongInt;
begin
PL:=@L; {PL указывает на переменную L}
L:=100000;
writeln(PL^); {выводится число 100000}
Dispose(PL); {пытаемся освободить память, которую не выделяли
ОШИБКА}
end.