(EAccessViolation) : FreeAndNilChild 来自 Owner (LINUX) LAZARUS PASCAL 时访问冲突
(EAccessViolation) : Access violation while FreeAndNilChild from Owner (LINUX) LAZARUS PASCAL
我只有在托管 linux 服务器时才会遇到访问冲突。 Windows 没有显示任何问题。当我尝试 FreeandNilChild Object if OWner 时会发生这种情况,请参阅代码。错误以图片形式附上。为什么这只发生在 Linux 个服务器中?我是不是遗漏了一些内存处理不当……可能是 GBD 版本……? Thakns伙计们表示赞赏。
TWAObject = class(TObject)
destructor TBasePersoneel.Destroy;
begin
FreeAndNilChild(FUser);
Inherited;
end;
然后
procedure TWAObject.FreeAndNilChild(var obj);
Var
T : TWAObject;
begin
T:=TWAObject(Obj);
if Assigned(T) and (T.Owner=Self) then
FreeAndNil(T);
end;
同时收到 RunError(216),然后是 EAccessViolation。
程序 FreeAndNil(var obj);来自 sysinth.inc
提前致谢
感谢您的反馈,原来我释放了同一个对象两次。由于某些原因,在 windows 中分配了正确的内存指针。但是在 Linux 中没有。谢谢大家
我只有在托管 linux 服务器时才会遇到访问冲突。 Windows 没有显示任何问题。当我尝试 FreeandNilChild Object if OWner 时会发生这种情况,请参阅代码。错误以图片形式附上。为什么这只发生在 Linux 个服务器中?我是不是遗漏了一些内存处理不当……可能是 GBD 版本……? Thakns伙计们表示赞赏。 TWAObject = class(TObject)
destructor TBasePersoneel.Destroy;
begin
FreeAndNilChild(FUser);
Inherited;
end;
然后
procedure TWAObject.FreeAndNilChild(var obj);
Var
T : TWAObject;
begin
T:=TWAObject(Obj);
if Assigned(T) and (T.Owner=Self) then
FreeAndNil(T);
end;
同时收到 RunError(216),然后是 EAccessViolation。 程序 FreeAndNil(var obj);来自 sysinth.inc
提前致谢
感谢您的反馈,原来我释放了同一个对象两次。由于某些原因,在 windows 中分配了正确的内存指针。但是在 Linux 中没有。谢谢大家