组件构造函数中nil owner的含义是什么

3 delphi null constructor owner

我正在看这个问题,现在我想知道,nil作为组件构造函数中的所有者是什么意思.

SomeComponent := TSomeComponent.Create(nil);
Run Code Online (Sandbox Code Playgroud)

我知道,在使用这个构造函数时我应该自己释放它,但这是在创建时传递所有者的唯一原因吗?当我忘记释放它并关闭我的应用程序时会发生什么 - 它是否意味着这个对象作为垃圾留在内存中?

非常感谢 :)

Ken*_*ite 15

这意味着你自己负责释放它.

如果您在表单上放置一个组件,它将使用该表单作为所有者构建.这意味着当表单被释放时,它将释放它拥有的所有组件.如果您传递不同的所有者(例如,在运行时创建TButton并将TPanel作为其所有者),则同样适用; 当所有者被销毁时,它释放了它在该过程中拥有的所有组件.

使用nil作为所有者意味着您在代码中手动创建它,并且您将自己承担释放它的责任.如果您忘记并且应用程序关闭,它的内存将被释放回操作系统.但是,如果您的应用程序在您忘记之后运行了很长时间,那么您将拥有一块不应该使用的内存.