如果COM接口拥有其他接口,是否必须覆盖AddRef
和Release
?
在创建接口时,会创建维护引用计数的成员,因此当自己的引用计数达到零时,我必须覆盖Release
以不泄漏拥有的接口。
但是AddRef怎么样?看起来只是对所拥有的接口进行浅层复制时,一切都会好起来的。它们可能具有低于拥有界面的引用计数,但是当所有者未达到零时,它们永远不会达到零。
此方案的一个示例是IDirect3DTexture9
拥有每个纹理级别的许多IDirect3DSurface9
。
答案 0 :(得分:0)
没有
应该在析构函数中释放资源,或者如果您使用智能指针字段则自动释放资源。我假设你正在使用C ++。
因此,实际上,内部接口指针的引用计数可能低于外部接口指针。
除了外部指针向内部指针的引用计数计数1之外,引用计数在其他方面完全独立。