我想new一个指针,然后将该指针的地址做为变量传递到另一个过程中,
我能否根据得到的地址将new出来的指针释放掉

解决方案 »

  1.   

    type
     pMyrec=^Myrec;
     Myrec=record
       x:integer;
       y:string;
     end;pro1 xxxx();
    var
     p:pMyrec;
    begin
     new(p)
      ...
     pro2(LongInt(@p));
     ...
    end;procedure pro2 (xx:longint)
    begin
     ....
    end;请楼上的在pro2中给我释放一下p
      

  2.   

    可以告诉我为什么要在pro2中释放p吗?你释放了但是外面程序还不知道,估计跑起来会爆出一堆的地址错误,一般是在哪里申请就在哪里释放的。
    一定要做的话,可以在proc2中将xx强制类型转换成pMyrec再释放。
      

  3.   

    procedure pro2 (xx:longint)
    begin
      Dispose(Pointer(Pointer(xx)^));
    end;你直接传指针本身就好了,最好不要这么传,会有问题的,另外,不要跨模块,比如在dll1中new,在dll2中释放,那就会有问题的.
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var p:pMyrec;
    begin
      New(P);
    end;procedure TForm1.DisposeP(p: pMyrec);
    begin
      if p<>nil then
        Dispose(P);
    end;
      

  5.   

    var
      Form1: TForm1;
      point :Pointer;
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var p:pMyrec;
    begin
      New(P);
      point :=p;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      DisposeP(point);
    end;procedure TForm1.DisposeP(p: pMyrec);
    begin
      if p<>nil then
        Dispose(P);
      P :=nil;
    end;你自己注意检查。
      

  6.   

    我想要的是只传递一个整型的地址,就将new(p),出来的p给释放掉!