关于资源保护与内存释放
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中所有类的实例.
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中所有类的实例.
相关文章推荐
- 关于Jquery内存的释放
- 水晶报表 释放资源|内存|
- 关于ie的内存泄漏与javascript内存释放
- 请问如何强行释放所有已关闭的程序所残留的内存等资源?类似于微软的那个叫mem.exe的工具,如何入手呢?
- Delphi中关于资源释放(Free/release/freeAndNil)的一点体会
- 关于C++中结构体及其指针成员的内存分配和释放
- (c#) 销毁资源和释放内存浅析
- Android 释放内存中的图片资源
- 关于C++中delete释放内存时效性问题
- TI C66x DSP 四种内存保护问题 -之- 外设訪问corePac内部资源时的内存保护问题
- 关于DI容器UnityContainer的Dispose方法释放资源的一点理解
- MFC关于VS2013内存释放的定位
- 关于在析构函数中释放内存
- 内存资源的申请与释放(C&C++)
- 释放内存中的图片资源
- 【品高云技巧】001.将暂不使用实例资源(CPU、内存)自动释放
- 关于内存分配与释放的试验
- 关于BItmap.createScaledBitmap释放内存引发的bug
- 【转】关于Jquery内存的释放
- flex中关于内存释放几个注意的地方(zz)