我想new一个指针,然后将该指针的地址做为变量传递到另一个过程中,
我能否根据得到的地址将new出来的指针释放掉
我能否根据得到的地址将new出来的指针释放掉
解决方案 »
- delphi如何实现让控件出现时透明度不断增加的效果?
- 多组件的焦点问题
- 如何使用Direct Oracle Access
- 普通窗体和DLL窗体混合调用的问题.
- 如何实现用BETWEEN AND查询日期型的关键字段
- 为什么在ADOTable1.open时报“Count not convert variant of type(NULL) into type(String)”这样的错误?
- 怎么解决三层结构中的数据插入和删除问题,最好能体现真正的三层结构。在线等待!
- 这条SQL语句怎么写?
- 请问 :学习delphi是不是能深入windows的内核
- 做软件开发的都不愿意要女生吗?
- sql问题
- 一个技术群:14857829
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
一定要做的话,可以在proc2中将xx强制类型转换成pMyrec再释放。
begin
Dispose(Pointer(Pointer(xx)^));
end;你直接传指针本身就好了,最好不要这么传,会有问题的,另外,不要跨模块,比如在dll1中new,在dll2中释放,那就会有问题的.
var p:pMyrec;
begin
New(P);
end;procedure TForm1.DisposeP(p: pMyrec);
begin
if p<>nil then
Dispose(P);
end;
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;你自己注意检查。