为动态创建的TComponent派生类实例传递一个NULL Owner参数好吗?

mat*_*975 5 c++ c++builder tcomponent

我非常喜欢使用C++ RAD Studio和Builder 6,并且经常在编写非可视代码时动态创建表单或动态创建非可视组件.在设计表单时,自动设置放在该表单上的组件的Owner属性,所以我从不担心它.但是,当创建TComponent动态派生的任何东西时,我总是NULL作为Owner参数传递,因为我总是负责以后释放内存.

Borland/Embarcadero文档并没有真正涵盖动态创建事物所需的内容(或者我可能没有在正确的位置查找),而且似乎只涉及基于设计时间表的场景.

我想知道为动态创建的组件传递NULL所有者是否正确,或者它是否会导致内部问题,这些问题将在以后显现出来.代码编译并正常工作,但我想知道它是否是原因或可能导致任何幕后问题.

Lie*_*ers 5

这当然不是一件坏事.

正如您已经暗示的那样,传递所有者可以减轻您自己管理对象生命周期的麻烦.没有隐藏的内部副作用需要您传递所有者.

FWIW:创建/使用和销毁无主组件并不罕见,我们一直这样做.


编辑 cudo's给Remy

虽然您的安装附带的组件可以在没有所有者的情况下使用(在某些角落情况下,例如TXMLDocument对所有者分配的行为不同),总是有可能第三方或家庭酿造组件依赖于所有者被分配.