program samukaz2;
type
ListPointer = ^list;
list = record
pNext: ListPointer;
pPrev: ListPointer;
data: byte;
end;
var
first, ends, tmp: ListPointer;
i : byte;
begin
first := nil;
for i:=1 to 10 do
begin
if first = nil then
begin
new(tmp);
tmp^.data := i;
tmp^.pPrev := nil;
tmp^.pNext := nil;
first := tmp;
ends := tmp;
continue;
end;
new(tmp);
tmp^.data := i;
tmp^.pNext := nil;
ends^.pNext := tmp;
ends := tmp;
end;
tmp := first;
repeat
writeln(tmp^.data);
tmp := tmp^.pNext;
until tmp = nil;
end.
Если в if'е после присвоения last и ends к tmp удалить его путём dispose(tmp); и тоже самое делать каждый раз после того как ends присваивается новое значение то код приводит к ошибке
10
56
Runtime error 216 at $00000000004011C7
$00000000004011C7
$0000000000422FEC
Я прочитал что значит это ошибка, но я не понимаю откуда взялись 10 и 56 и почему если удалять временный указатель то вылазит ошибка.
Компилятор FreePascal 3.2.2