1
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;
4

0 回答 0