gpt4 book ai didi

c++ - 删除 DirectShow 过滤器(未调用析构函数)

转载 作者:太空狗 更新时间:2023-10-29 21:06:54 25 4
gpt4 key购买 nike

我已经构建了一个实现 CSource 的自定义 DirectShow 过滤器,例如

class Myfilter : public CSource
{
~MyFilter(){ delete everything;}
}

当我在GraphStudio中使用这个过滤器时,我可以正确地删除它,正确调用析构函数。

当我通过 COM instaciation 创建我的过滤器时,我不能再用 delete 删除它

IBaseFilter *pFilter = NULL;

HRESULT hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pFilter));

然后delete pFilter不会调用析构函数。

如何为过滤器调用自定义析构函数?

最佳答案

您不应该删除 COM 对象,您应该Release()他们。 CSource 可能将 IUnknown::Release() 实现为 delete this,当引用计数下降到 0 时。

关于c++ - 删除 DirectShow 过滤器(未调用析构函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6399779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com