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