Pascal проблема с использованием dispose и последующим присвоением NILL этому указателю. Эта проблема возникает только когда я использую для х в г - PullRequest
0 голосов
/ 22 января 2020
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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...