Вот тестовый пример, который показывает данную ситуацию:
Код:
program qwerty;
type
Myarr=array[1..10] of real;
PMyarr=^Myarr;
var
p:PMyarr;
i:integer;
function retp:PMyarr;
var
retval:PMyarr;
begin
New(retval);
retp:=retval;
end;
begin
i:=0;
while true do
begin
p:=retp;
{Dispose(p);}
i:=i+1;
writeln(i)
end
end.
Вылетает с ошибкой на 8447 итерации цикла. Раскоментировав строку {Dispose(p);} бесконечно работающий цикл.