我有一段程序,不知道内存该怎么释放?
 下面是我的类型声明:
   PRuninfo = ^TRuninfo;
   TRuninfo = Record
     Name:string;
     ID  :string;
   end;
//下面是我声明的两个PRunInfo类型的量;
  RunInfo1, RunInfo2: PRunInfo;
//下面是我进行的初始化;
   RunInfo1 := ATrainList.Items[FirstNode];
   RunInfo2 := ATrainList.Items[SecondNode];
我的问题就在上面的这两行,我不知道RunInfo1, RunInfo2需不需要create,还有需不需要释放,如果按照现在的做法他所占用的内存是不是释放不掉,该怎么修改?谢谢各位了;

解决方案 »

  1.   

    不用create了,要释放可用RunInfo1:=NIL
      

  2.   

    不需要释放的. 因为你并没有为它分配内存空间. 它只是指向了 ATrainList.Items而已. 而控件本身所带的point属性会随控件自身的释放而释放的.
      

  3.   

    要CREATE
    RunInfo1:=TRunInfo.Create;
    RunInfo2:=TRunInfo.Create;
    然后附值语名
    用完后可以手动释放
    RunInfo1.free;也可以由程序自己释放
      

  4.   

    不用释放runinfo的. 因为你根本就没有为它分配内存空间.只是让它指向了ATrainList.Items[FirstNode];而已. 而ATrainList.Items[FirstNode]是控件的一个point型属性,它会随控件体身的释放而释放的.
      

  5.   

    释放就用RunInfo1.free就可以拉
      

  6.   

    当然,如果你 create 或 new 了 ,  就一要 .free 或 free()了
      

  7.   

    你的ATrainList中的ITEM对象也是PRuninfo吗?如果是,你是如何ADD的。
    内存当然要释放,关键看你的指针变量是如何创建的。Delphi中,New()与Dispose()是对应的。getMem()与FreeMem()是对应的。
    TRuninfo是你定义的一个数据记录结构,不是CLASS,因此不能用Create.
    如:///向列表中增加一个指针元素
    var
      p1:PRuninfo;
    begin
      New(p1);
      //或getMem(P1,sizeof(P1));
      ATrainList.Add(P1);
    end;
    ////
    var
      P2: PRuninfo;
    begin
      P2 := ATrainList.Items[0];
      ShowMessage(P2^.Name+P2^.ID);  
      Dispose(P2);//此处与上面的New()对应
      //FreeMem(P2); //此处与GetMem()对应end;
      

  8.   

    给分
    Chayezi(yes) (6)
    Spqk005(舍甫琴柯)(7)
    IwantFlay(我很爱她!!!!!!!!!!)(15)
    karach(卡车) (7)
    kkk2000(肥牛)(15)