先看段程序:procedure TForm1.Button1Click(Sender: TObject);
var P:array of integer;
begin
setlength(P,2);
setlength(P,1);
P[0]:=12;
P[1]:=34;
P[2]:=56;
showmessage(inttostr(P[2]));
end;
这段程序是不会报错的,而且显示很正常,为什么?内存泄漏吗?后发现去掉 setlength(P,2);也不报错,到底为什么?
我的机子是Vista,装的Delphi7(因为Delphi2007及以上版本有些问题)。
var P:array of integer;
begin
setlength(P,2);
setlength(P,1);
P[0]:=12;
P[1]:=34;
P[2]:=56;
showmessage(inttostr(P[2]));
end;
这段程序是不会报错的,而且显示很正常,为什么?内存泄漏吗?后发现去掉 setlength(P,2);也不报错,到底为什么?
我的机子是Vista,装的Delphi7(因为Delphi2007及以上版本有些问题)。
另外如果有别其他变量占用了该内存,这边改掉以后可能会引起调用其他变量时出错
另外,在我这里XP+D7是不报错的,跟系统没有关系
谢谢各位。
再有2个或以上回帖就散分,嘎嘎