gpt4 book ai didi

c++ - CoCreateInstance - 反过来是什么?

转载 作者:太空狗 更新时间:2023-10-29 20:24:06 26 4
gpt4 key购买 nike

使用 COM 你使用 CoCreateInstance创建一个对象。

有没有办法完全破坏它,以便单元测试的下一部分可以重新开始?

最佳答案

每个持有引用的 COM 接口(interface)指针的人都可以保证该对象是存活的,因此如果不知道每个持有指向您的 COM 对象的接口(interface)指针的人,并且能够请求释放您就无法确保该对象已被销毁。

你当然可以试试

for(; ; )
{
if(pFoo->Release() == 0)
break;
}

然而,即使这样,您 (a) 可能会陷入死循环,(b) 那些引用您的对象的人一旦尝试访问已销毁的对象(他们仍然希望引用的对象仍然存在),就会出现访问冲突/未定义行为。

另一种方法是使用包装器对象并在内部管理真正的 COM 对象而不公开它。然后您将方法调用从包装器转发到内部对象。然后你可以要求你的包装器释放内部引用,这通常会导致内部对象的破坏。

关于c++ - CoCreateInstance - 反过来是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30001875/

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