资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

接口用实现类生成以后,要不要释放?

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

ITest   =   Interface  
  end;  
  TTest   =   class(TInterfaceObject,   ITest)  
  end;  
  ...  
  var  
      t:   ITest;  
  ..  
      t   :=   TTest.Create;  
   
  ...  
      后面t要不要free,   这样实现类会不会一直占用内存  
   
   
  还有一个小问题  
   
  TMyRec   =   record  
        a:   array[0..49]   of   Char;  
  end;  
   
  下面  
  r   :=   TMyRec;  
  SizeOf(r.a)可以  
  但是我不想用变量,取得a长度  
   
  SizeOf(TMyRec.a)不行  
   
   
   
 

网友回答:

发表者:linzhengqun

1,不用,用完后直接赋Nil就行了  
  2,不想变量,什么意思,这样不好吗SizeOf(r.a)  
        或者这样:SizeOf(TMyRec)

发表者:smilefox2000

用t:=nil;        
  我认为最好的方式是var   TT:TTest;         TT:=TTest.create;     t:=TT;       释放时TT.free;   t:=nil;

发表者:hottey

1.接口的实例是基于引用计数的,所以不需要你自己Free掉,它会自己处理。  
  2.SizeOf(TMyRec)   也是可以的,声明记录时内存已分配。  
  3.具体相当于2.procedure   MyRec(var   Rec:   TMyRec) 这个。返回大于4个字节添加一个额外的var参数,代表函数的返回值。  
   
  //仅供参考

发表者:WGYKING

1   这是D中接口引用和对象引用的混淆  
      我也不喜欢这样  
      虽然编译器允许我们不释放,它可以帮我们做这个工作  
      但是我认为最为一个好的习惯  
      应该明文写一下  
      t:   ITest;  
      。。  
      t   :=   TTest.Create;  
      。。  
      t   :=   Nil;  
   
  2   从设计上来讲  
      应该是是创建谁释放


 

 
热门推荐笔记本: 宏碁笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved