问一个简单的指针问题

LittleStar 2006-04-14 03:15:01
var
p:^integer;
i:integer;
begin
try
new(p);
i:=100;
p:=@i;//dispose会出错,出错的原因我理解。请问我应该怎么样释放P呢?谢谢。很弱智的问题:(
finally
dispose(p);
end;
end;
...全文
213 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ycyhf 2006-05-10
  • 打赏
  • 举报
回复
把 dispose(p);去掉
alexanda2000 2006-04-14
  • 打赏
  • 举报
回复
如果是这样就不要再为P申请空间了,直接指向i变量的地址就好了.
var
p:^integer;
i:integer;
begin
i:=100;
p:=@i;
end;
bluesky23 2006-04-14
  • 打赏
  • 举报
回复
UP
lxtnt 2006-04-14
  • 打赏
  • 举报
回复
如果I已赋值,就可以直接用指针指向它
YaYiYaO 2006-04-14
  • 打赏
  • 举报
回复
new(p); 分配了一个int型的内存空间
p:=@i; 放弃分配的内存空间,将指针指向i的地址
dispose(p); 试图释放p指向的地址,实际为i的地址,当然错,错的一塌糊涂,乱七八糟
xixuemao 2006-04-14
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
p: ^integer;
i: integer;
begin
try
new(p);
i:= 100;
showmessage(inttostr(Integer(p)));
p^:= i;//改成p:= @i;再看看就明白了。
showmessage(inttostr(Integer(p)));
finally
dispose(p);
end;
end;
madyak 2006-04-14
  • 打赏
  • 举报
回复
当你更改P的指针位置时,需要把P初始化时的地址保留下来,存在一个地址变量中,想释放P原来的内存空间时,释放那个保存原来P地址的变量就行了
xixuemao 2006-04-14
  • 打赏
  • 举报
回复
应该p^:=i;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧