unit Unit3;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm3 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
Type
PLvItemInfo = ^TlvItemInfo;
TLvItemInfo = record
a : String;
b : String;
c : String;
d : String;
e : String;
f : String;
g : String;
end;
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;
finfoList : Tlist;
implementation{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
var
Ptr : PLvItemInfo;
i : integer;
begin
finfolist := Tlist.Create;
for I := 0 to 1000 do begin
New(Ptr);
ptr^.a := '123';
ptr^.b := '123';
ptr^.c := '123';
ptr^.d := '123';
ptr^.e :='123';
ptr^.f := '123';
ptr^.g := '123';
finfoList.Add(Ptr);
end;
end;procedure TForm3.Button2Click(Sender: TObject);
var
i : integer;
Ptr : PLvItemInfo;
begin
for I := 0 to finfolist.count-1 do begin
ptr := finfolist[i];
freemem(ptr);
end;
finfolist.Clear;
finfolist.Free;
end;end./////////////////////////////////////////////////////
按纽1把RECORD中的内容加到了LIST中。按纽2我想在清空LIST内容之前把RECORD指针变量的内存释放掉。可是我这样写。内存是没有被释放的。在任务管理器中查看了。点按纽2。占用内存没有变小。请高手帮帮我。。HELP
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm3 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
Type
PLvItemInfo = ^TlvItemInfo;
TLvItemInfo = record
a : String;
b : String;
c : String;
d : String;
e : String;
f : String;
g : String;
end;
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;
finfoList : Tlist;
implementation{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
var
Ptr : PLvItemInfo;
i : integer;
begin
finfolist := Tlist.Create;
for I := 0 to 1000 do begin
New(Ptr);
ptr^.a := '123';
ptr^.b := '123';
ptr^.c := '123';
ptr^.d := '123';
ptr^.e :='123';
ptr^.f := '123';
ptr^.g := '123';
finfoList.Add(Ptr);
end;
end;procedure TForm3.Button2Click(Sender: TObject);
var
i : integer;
Ptr : PLvItemInfo;
begin
for I := 0 to finfolist.count-1 do begin
ptr := finfolist[i];
freemem(ptr);
end;
finfolist.Clear;
finfolist.Free;
end;end./////////////////////////////////////////////////////
按纽1把RECORD中的内容加到了LIST中。按纽2我想在清空LIST内容之前把RECORD指针变量的内存释放掉。可是我这样写。内存是没有被释放的。在任务管理器中查看了。点按纽2。占用内存没有变小。请高手帮帮我。。HELP
解决方案 »
- dbgrideh操作问题
- ADOQuery Delete
- fastreport4.3 frxPDFExport
- 关于变量的创建顺序和有效域的问题
- 修改注册表,改一个扩展名的默认打方式,及对应图标,但系统没有马上刷新对应文件图标,应该怎么弄?
- 请启手帮忙解决一个indy控件的http数据转发问题
- WebSnap中WebUserList的AccessRights和Adapter的ViewAccess如何使用?
- 如何建立一个临时表!
- 我用ADOQUERY连接一个DBGRID,我已经在ADOQUERY的SQL上写了一条语句
- 谁有CSDN论坛助手的源程序,分享一下吧,谢谢
- 关于正则表达式的死循环问题
- VCL程序报错,请大虾赐教。
for I := 0 to finfolist.count-1 do begin
ptr := finfolist[i];
dispose(ptr);
end;改成这样。一样没有解决问题。
dispose 为指针释放内存
测试了。我在按纽2中,并没有释放掉内存啊。
用dispose.
Dispose:释放内存
unit Unit3;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm3 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
Type
PLvItemInfo = ^TlvItemInfo;
TLvItemInfo = record
a : String;
b : String;
c : String;
d : String;
e : String;
f : String;
g : String;
end;
var
Ptr : PLvItemInfo;
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;
finfoList : Tlist;
implementation{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
var
i : integer;
begin
if not assigned(finfolist) then
finfolist := Tlist.Create;
for I := 0 to 100000 do begin
New(Ptr);
ptr^.a := '123';
ptr^.b := '123';
ptr^.c := '123';
ptr^.d := '123';
ptr^.e :='123';
ptr^.f := '123';
ptr^.g := '123';
finfoList.Add(Ptr); end;
end;procedure TForm3.Button2Click(Sender: TObject);
var
i : integer;
begin
if assigned(finfolist) then begin
for I := 0 to finfolist.Count-1 do begin
ptr := finfolist.Items[i];
dispose(ptr);
end;
finfolist.Clear;
finfolist := nil;
finfolist.Free;
end;
end;end.