procedure freeMem (var v: tTabla; i: integer);
var
p : tPEntero;
begin
for p in v do
if p^ < i then
begin
dispose(p);
p := NIL;
end;
writeln('Memory disposed.');
end;
У меня есть массив из 4 указателей, которые указывают на эти целые числа:
[1, 2, 3, 4]
В основной программе я вызываю процедуру freeMem(table, 2);
означает, что ожидаемый результат при вызове метода writeTable(table);
должен быть:
[NIL, 2, 3, 4]
Но полученный результат:
[12800, 2, 3, 4]
В основном случайное значение, где я расположил указатель.
Если я изменяю процедуру freeMem(v, i)
и не использую for -- in -- do
это работает как-то, я хочу знать, почему это не работает иначе
procedure freeMem (var v: tTabla; i: integer);
var
indice: integer;
begin
for indice:=1 to MAX do
if v[indice]^ < i then
begin
dispose(v[indice]);
v[indice] := NIL;
end;
writeln('Memory disposed.');
end;