COM所有权与接口中的组合

时间:2015-10-11 14:41:43

标签: com composition ownership

如果COM接口拥有其他接口,是否必须覆盖AddRefRelease

在创建接口时,会创建维护引用计数的成员,因此当自己的引用计数达到零时,我必须覆盖Release以不泄漏拥有的接口。

但是AddRef怎么样?看起来只是对所拥有的接口进行浅层复制时,一切都会好起来的。它们可能具有低于拥有界面的引用计数,但是当所有者未达到零时,它们永远不会达到零。

此方案的一个示例是IDirect3DTexture9拥有每个纹理级别的许多IDirect3DSurface9

1 个答案:

答案 0 :(得分:0)

没有

应该在析构函数中释放资源,或者如果您使用智能指针字段则自动释放资源。我假设你正在使用C ++。

因此,实际上,内部接口指针的引用计数可能低于外部接口指针。

除了外部指针向内部指针的引用计数计数1之外,引用计数在其他方面完全独立。