library SMS;uses
  Classes,
  SysUtils,
  SOAPHTTPClient,
  MonitorWebServices1 in 'MonitorWebServices1.pas',
  uWebServices in 'uWebServices.pas';{$R *.res}var
  rioList: TList;begin
  rioList := TList.Create;
end.因主调程序需要,创建了一个常驻的TList,如上,这个TList该怎么释放?在哪里释放?

解决方案 »

  1.   

    在DLL里创建一个函数
    FreeList()供外部调用
    主程序在结束时,调用DLL中的函数FreeList()
      

  2.   

    其实我是用dll封装了一个WebServices应用接口,主调程序是个多线程应用,需要在dll中为每个线程单独创建一个THTTPRIO对象,我想把这些创建的THTTPRIO对象地址保存到TList中,谁有更好的解决方案?注意主调程序的线程个数不确定,需要dll动态创建,创建完毕把对象的指针地址传给主调程序即可,这些对象该如何保存好?
      

  3.   

    我一开始想用动态数组,但是好像不可取,动态数据重新SetLength过后里边的数据就丢了,而主调程序随时都有可能要求分配新的THTTPRIO对象给他,不知道如何解决才是完美的方案。
      

  4.   

    我在说一下我的需求,就是我需要动态创建可供外部程序使用的对象,这些对象在dll中必须以全局变量的形式定义,然后传给主调程序这些对象的地址即可
      

  5.   


    function ....
    var
      i: Integer;
    begin
      i := rioList.Add(THTTPRIO.Create(nil));我这样创建好像不行,这样创建的THTTPRIO变量在函数执行完毕后好像就自动释放了,再调用TList中的这个对象会报内存错误。
      

  6.   

    另开了一贴,请大家看这里:
    http://topic.csdn.net/u/20091015/11/ca5bc07f-8650-4751-991e-81d198ee2171.html?97417