如何判断一个指针为有效指针

LiangShengHong 2002-08-29 11:00:30
例如
var
A:TLabel;
begin
A:=Label1;
Label1.Free;
//此时 A 仍然指向 Label 的地址
//碰到这种情况如何判断A指向一个可以访问的地址
if(Assigned(A))
self.Caption:='A is not null';
end;
...全文
55 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
PingPingPangPang 2002-08-30
  • 打赏
  • 举报
回复
你这里等于人为制造了一个野指针,使用这个指针非常危险,而且也没什么办法,指针使用的原则是永远让它指向一个有效的数据地址。
Nizvoo 2002-08-30
  • 打赏
  • 举报
回复
不如Free把它赋给nil呵呵。
var
lblNew: TLabel;

lblNew := TLabel.Create(Self);
lblNew.Parent := Self;
lblNew.Caption := 'Haha;
----------------------------------------------
lblNew.Free;
lblNew := nil;
----------------------------------------------
if Assigned(lblNew) then
MessageBox(Handle, '有效的值', '提示', 0);
ball_cao 2002-08-30
  • 打赏
  • 举报
回复
如已知指针的类名,可以用下面办法判断
不知道 if A is TLabel then //有效

try
stemp:=A.Caption;
except
//无效指针
end;
u2m 2002-08-30
  • 打赏
  • 举报
回复
用FreeAndNil()释放
LiangShengHong 2002-08-30
  • 打赏
  • 举报
回复
各位老兄,现在的问题就是要解决这个问题,有一个空件包中存在该类型的Bug 我需要修改,现在怎样解决问题,不是让你们提无关紧要的意见的。
耙子 2002-08-29
  • 打赏
  • 举报
回复
你这么判断没用的,判断的结果存在随机性。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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