您的位置:首页 > 其它

关于资源保护与内存释放

2012-09-15 13:22 113 查看
1.Tstrings 必须手工释放 Free (TstringList 在堆里分配内存,没有拥有者,所以没有帮她释放的类)

2.关于form释放问题

要彻底释放窗体,光close是不够的。 一般需在onclose事件中写Action:=cafree 并在

FormDestroy事件中写from:=nil;

方法1:

try

if not Assigned(Form2) then

Form2 := TForm2.Create(Application);

Form2.ShowModal;

finally

Form2.Free;

Form2:= nil;

end;

方法二

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);

begin

action := cafree;

end;

procedure TForm2.FormDestroy(Sender: TObject);

begin

form2:=nil;

end;

3.有创建就要有释放

打开一个 创建一个 关闭一个 释放一个

4.看了一天的贴子,有些感触:谁创建谁负责释放。

静态变量系统负责

动态变量自己负责

无论如何要保证内存不会泄漏,下面为摘抄文字:

1在静态区:这种变量在编译的时候就分配空间,生命周期可以认为和你的进程一样长。

不用手动分配和释放。比如:全局变量。

2在栈上:由系统自动分配,自动释放。生命周期局限与作用域(一个函数和过程)。

比如:所有的局部变量和函数过程的参数。

3在堆上:用之前由你向系统申请空间,用过后必须手动释放,否则内存泄露。

比如:Delphi中所有类的实例.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: