当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 房价高反正我也不关心了,妈的现在是房租也跟着水涨船高,nnd这个夏天我是在银行的自动提款机房里过的。 1有空调多凉爽,2不熄灯,3很少人打扰,4给提款的人壮胆.不过最好带上席子,不要带钱和能证明你身份的东西。 ......
 ·一个比较好的想法请大家看看    »显示摘要«
    摘要: 整天忙于工作,收集资料,到了最后发现自己总是为别人做东西.于是很想自己做一点属于自己的东西.想来想去,想做一个象qq或msn一样及时通讯的工具.但是又不知道如何下手,请各位帅哥给指导指导.小弟在这里多谢了(100分)! ......


这种情况如何回收堆空间

TBedID   =class(TObject)  
      public  
          bedid:integer;  
      end;  
  然后在一个过程中:  
  var    
      objBedID:   TBedID  
      tl:TListItem;  
  begin  
      while   ……   do  
      begin  
          tl   :=   bedview.Items.Add;  
          tl.Caption   :=…;  
          objBedId:=TBedID.Create;  
          objBedId.bedid:=   bedid;  
          tl.Data:=objBedId;  
        //在这里不能用objBedID.free回收堆空间  
        //但是问题是当退出这个过程之后,这个堆空间都没有了访问句柄或都说对象引用。  
        //这将导致内存泄漏  
        //那么如果该过程调用多次,会导致内存不足吗?  
        //如何解决这类问题的空间回收问题,谢谢。  
      end;  
  end;  
 

NO.1   作者: swayi21

procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      LI:   TListItem;  
      i:   Integer;  
      Obj:   TMyObject;  
  begin  
      ListView1.Items.Clear;  
   
      ListView1.Items.BeginUpdate;  
      try  
          for   i   :=   0   to   5   do  
          begin  
              Obj   :=   TMyObject.Create;  
              Obj.ObjectID   :=   100   +   i;  
   
              LI   :=   ListView1.Items.Add;  
              LI.Caption   :=   ListItem   +   IntToStr(i);  
              LI.Data   :=   Obj;  
              LI.SubItems.Add(Object   +   IntToStr(Obj.ObjectID));  
          end;  
      finally  
          ListView1.Items.EndUpdate;  
      end;  
   
      ShowMessage(All   added,   let   us   clear   the   objects.   );  
   
      ListView1.Items.BeginUpdate;  
      try  
          for   i   :=   0   to   ListView1.Items.Count-1   do  
          begin  
              LI   :=   ListView1.Items[i];  
              if   LI.Data   <>   nil   then  
              begin  
                  LI.Data   :=   nil;  
                  LI.SubItems[0]   :=   ;  
              end;  
          end;  
      finally  
          ListView1.Items.EndUpdate;  
      end;  
   
      ShowMessage(Ok,   nothing   left.   );  
  end;  
   
  这样应该不会有问题的,如果要在其他地方释放,方法一样。

NO.2   作者: Idle_

TObject(LI.Data).Free;  
   
  置不置为nil并不重要.   一般置为nil是为了防止再次释放时把自己搞糊涂搞不清哪些已经释放过了,   如果只释放一次根本不用置nil  
   
 


 ·菜鸟关于触发器问题创建过程    »显示摘要«
    摘要: sql server 2000 我有三个表table1(id1,bb,cc),table2(id2,id1,dd),table3(id3,id1,id2) 我要的是删除数据同步,触发器如编写的代码如下: create trigger [tr_table2] on [dbo].[table1] for delete as select * from table1,table2 where t......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE