首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

动态创建1000个label,怎么释放内存

2012-04-24 
动态创建1000个label,如何释放内存vara:array of tlabelbeginsetlength(a,1000)for i:0 to 999 dobegin

动态创建1000个label,如何释放内存
var
a:array of tlabel;
begin
setlength(a,1000);
for i:=0 to 999 do
 begin
  创建1000个label;
 end;
end;

这1000个label如何释放?

[解决办法]

Delphi(Pascal) code
type  TForm1 = class(TForm)    Button1: TButton;    Button2: TButton;    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);  private   a:array of tlabel;  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var i:integer;beginsetlength(a,1000);for i:=0 to 999 do begin   a[i] := TLabel.Create(self);   a[i].Left := i+5;   a[i].top := i+5;   a[i].Caption := ' Label'+ IntToStr(i);   a[i].Parent := Form1; end;end;procedure TForm1.Button2Click(Sender: TObject);var i:integer;begin for i := Length(a)-1 downto 0 do  a[i].free;end;
[解决办法]
for i:=low(a) to hight(a) do
a[i].free;

设置为0长度的数组,如setlength(a,0)可以认为就是释放数组,有人说a:=nil也是释放,不过这2个都没意义
因为动态数组是在堆上分配的,过程结束自动释放,不用手工去处理,只要把创建的控件释放就行了

热点排行