以下的程序为什么报错,请说明原理

iloveyan 2001-12-19 06:04:15
procedure I_AV;
var
P:PByte;
begin
P:=Nil;
try
p^:=1;
except
on EAccessViolation do
MessageDlg('You can’t do that!', mtError, [mbOK] , 0 ) ;
end
end;
...全文
40 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigban 2001-12-19
  • 打赏
  • 举报
回复
这样不报错
P:=Nil;
GetMem(p, 2);
try
p^:=1;
showmessage('ok');
except
on EAccessViolation do
MessageDlg('You can’t do that!', mtError, [mbOK] , 0 ) ;
end;
你必须先为指针分配空间,然后才能将一个数值放在这个空间里.OK?
王集鹄 2001-12-19
  • 打赏
  • 举报
回复
var
P: PByte;
begin
New(P);
try
p^:=1;
except
on EAccessViolation do
MessageDlg('You can’t do that!', mtError, [mbOK] , 0 ) ;
end;
Dispose(P);
end;
王集鹄 2001-12-19
  • 打赏
  • 举报
回复
没有分配内存资源给P

5,928

社区成员

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

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