关于资源保护与内存释放问题

今天开始决定看看这方面的问题,现在坛子里搜搜。在找找其它资料  
  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中所有类的实例.        

你可能感兴趣的:(关于资源保护与内存释放问题)