我在一窗口定义一全局链表,在窗口的OnShow事件里给链表装初值;我关掉窗口后再启动窗口时发现原链表并没删除,并在后面进行追加数据。难道窗口关掉后,链表不会自动释放吗?那我应该如何删除它,请给个例子吧,多谢了!!

解决方案 »

  1.   

    procedure TSetOptionalForm.FormCreate(Sender: TObject);
    var
      f : textfile;
      i : integer;
      str,str1 : string;
      flagz : bool;
      Header,P: PMyList;begin    //创建链表
       
       Header := MyList;
      ////   assignfile(f,'zxg.ini');
       listbox1.Clear;
       listbox2.Clear;   for i := 0 to totalrow - 1 do
       begin
         flagz := false;
         reset(f);
         while not eof(f) do
         begin
            readln(f,Str);
            str1 := copy(str,1,6);
            if  gpdm[i].id = str1 then
            begin
              listbox2.Items.Add(str);
              flagz := true;
              break;
            end ;
         end;
         if flagz = false then
         begin
            New(Mylist);
            Mylist^.code := gpdm[i].id;
            Mylist^.Name := gpdm[i].name;
            Mylist^.zm := gpdm[i].py;
            Mylist^.Ptr := Header;
            Header := Mylist;
            listbox1.Items.Add(Mylist^.code+' '+Mylist^.Name);
         end;
         CloseFile(f);
       end;
       Ra_dm.Checked := true;
    end;
      

  2.   

    如 hotzhu(非洲白脸) 所说,要释放!
    你每调用一次New系统就会为之分配一定的资源,
    所有New的地方都要Dispose
    所以你在关闭的时候作Dispose就可以了