type
  Taaa = record
    s1: string;
    s2: string;
  end;var
  l: TList;
如上,如果Tlist里面添加的都是Taaa,那么tlist.delete()能放释放掉那2个string所占的内存呢,如果不能,该如何做?

解决方案 »

  1.   

    Taaa是加不进Tlist的
    要加PTaaa = ^Taaa
      

  2.   

    string又不需要申请,哪来的释放
    知道最大长度可以定义成string[32]这样
      

  3.   

    PTaaa = ^Taaavar
      a: PTaaa;
      l: TList;
    begin
      new(a)
      a^.s1 := '1111';
      a^.s2 := '2222';
      
      l := TList.Create;
      l.add(a);
      //...
      a := l.items[0];
      l.delete(0);
      dispos(a);
      l.free;
    end;找到一段代码,说是需要用到new和dispos,请问一下,如上可以释放干净不?
      

  4.   

    释放应该没问题
    Delphi7 的话 用FastMM
    D2010的话 ReportMemoryLeaksOnShutdown := DebugHook<>0;检查是否有内存泄露。
      

  5.   


    放心,就是这样释放的。
    不过我的习惯是
    先 Dispose,在 delete。
    请照顾逻辑上的顺序,是个良好习惯。
      

  6.   

    a := PTaaa(l.items[0]);