释放tbitmap变量时访问违规 - 释放后仍分配的位图变量



我在vcl表单应用程序中具有此代码:

implementation
{$R *.dfm}
var
  MyBitmap: TBitmap;
procedure TFormMain.FormCreate(Sender: TObject);
begin
  MyBitmap := TBitmap.Create;
end;
procedure TFormMain.FormDestroy(Sender: TObject);
begin
  if Assigned(MyBitmap) then
    MyBitmap.Free;
end;
procedure TFormMain.Button1Click(Sender: TObject);
begin
  if Assigned(MyBitmap) then
    MyBitmap.Free;
end;

第二次单击按钮时,我在按钮的单击处理程序中第二次在 MyBitmap.Free;中违反访问。但是在单击第一个按钮后,不应再分配MyBitmap。那么,为什么条件if Assigned(MyBitmap) then显然可以在第一个按钮上单击时单击第二个按钮?

delphi 10.1柏林更新2

Assigned功能仅检查指针为Nil。它没有执行检查是否指向现有对象。释放它后,您需要将其设置为Nil,以便按照您的期望获得Assigned功能。FreeAndNil执行这两个说明。

相关内容

  • 没有找到相关文章

最新更新