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);
应该是:
[无, 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;