gpt4 book ai didi

delphi - 我可以使用 .Create(Nil) 而不是 .Create(Application)

转载 作者:行者123 更新时间:2023-12-03 14:50:40 27 4
gpt4 key购买 nike

我有一个具有 TComponent 变量的单元,我在单元初始化时创建此组件,如下所示:

var
XComp: TComponent;
.
.
.
.

initialization
begin
XCom := TComponent.Create(Application);
end;

安装该单元后,当我关闭 Delphi 时,它会显示访问冲突错误消息 (EAccessViolation)

但是当我将创建者更改为以下内容时

initialization
begin
XCom := TComponent.Create(nil);
end;

一切都很顺利...我想知道有什么区别吗?什么是更好的?

注意:该错误仅在关闭delphi时出现(指在设计时)。

谢谢。

最佳答案

当您使用时

XCom := TComponent.Create(Application);

您使应用程序成为 XCom 的所有者。当应用程序终止时,它将负责销毁 XCom,因为它是所有者。

当你这样做时

XCom := TComponent.Create(nil);

没有人是 XCom 的所有者,当应用程序终止时,您必须自行释放它。

您可能会遇到异常,因为您手动释放了 XCom,然后应用程序也尝试释放 XCom。

关于delphi - 我可以使用 .Create(Nil) 而不是 .Create(Application),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11807458/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com