关于资源保护与内存释放

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中所有类的实例.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值