Delphi里对象变量释放后判断是否为nil?  转

delphi里面对象变量释放后,如果没有显式置为nil,此时在别的过程中可能Assigned可能仍然返回true,而直接继续访问对象一般都报经典的AV错误,这是一般需要增加一个如下的处理方法。


function IsValidObject(const Obj: TObject): Boolean;
begin
try
Result := PInteger(Integer(Obj.ClassType)+vmtSelfPtr)^ = Integer(Obj.ClassType);
except
Result := False;
end;
end;
因为原来的object所指向的堆已经破坏,通过地址再次访问此地址,很有可能是一堆无意义的内存,所以能判断对象已经释放了
原文地址:https://www.cnblogs.com/luckForever/p/7254709.html