问一个简单的指针问题

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;
...全文
155 点赞 收藏 8
写回复
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;
回复 点赞
发动态
发帖子
Windows SDK/API
创建于2007-08-02

797

社区成员

2.2w+

社区内容

Delphi Windows SDK/API
社区公告
暂无公告