Delphi中须注意的二个对象(TStreamAdapter、TObjectList)的释放问题

来源:互联网 发布:手机丢了淘宝怎么冻结 编辑:程序博客网 时间:2024/04/30 06:09
 TObjectList对象的创建方法有一个参数:
constructor TObjectList.Create(AOwnsObjects: Boolean);
从字面就可理解其意义:拥有对象集与否。帮助文档:
If the OwnsObjects property is set to true (the default), TObjectList controls the memory of its objects, freeing an object when its index is reassigned; when it is removed from the list with the Delete, Remove, or Clear method; or when the TObjectList instance is itself destroyed.

这段话的意思就是TObjectList 的几个删除方法和释放方法都受参数AOwnsObjects的影响。我就常常用 TObjectList来管理对象,很方便。记得第一次用时,没看文档,用的默认参数值,重载其释放方法,结果一直报错,因为在DLL中实现,找了很久才找出缘由。


TStreamAdapter对象的创建方法也有一个类似的参数
constructor TStreamAdapter.Create(Stream: TStream; Ownership: TStreamOwnership);
当Ownership参数为soOwned时,则适配器释放时会释放其对应的具体流实例。
原创粉丝点击