繁体   English   中英

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

[英]What is the meaning of nil owner in component constructor

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

SomeComponent := TSomeComponent.Create(nil);

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

非常感谢 :)

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

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

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

你应该阅读这篇文章 它讨论了VCL如何设计来处理这种所有权范例。

文章还给出了为什么它是所有所有者创建以及自由的重要部件的例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM