我定义了一个Tlist对象: FPrograms := TList;
                       FPrograms := TObjectList.Create;
然后FPrograms.Clear,加入了一些对象后;
但是再次FPrograms.Clear时出现内存错误,这是什么原因?

解决方案 »

  1.   

    list中存的对象析构的时候出错
      

  2.   

    TList.Clear是不释放对象内存的,你用Clear出错应该不是TList的错误,而是Clear后引起其它引用这些对象的代码找不到正确的对象出错的,请检查.
      

  3.   

    procedure TObjectList.Notify(Ptr: Pointer; Action: TListNotification);
    begin
      if OwnsObjects then
        if Action = lnDeleted then
          TObject(Ptr).Free;
      inherited Notify(Ptr, Action);
    end;FPrograms.Clear;
    将会把列表中的对象释放掉楼主把能调试代码贴出来看看
      

  4.   

    我解决了
     try //清除原有的tlist
      for i:=0 to mytlist.Count-1 do  
       begin
        tempprec:=pmyrecord(mytlist.Items[i]) ;
        Dispose(tempprec);
       end;
     finally
        mytlist.Free;
     end;