CoCreateInstance - 反过来是什么?
CoCreateInstance - What is the reverse?
使用 COM,您使用 CoCreateInstance 创建对象。
有没有办法完全破坏它,以便单元测试的下一部分可以重新开始?
每个持有引用的 COM 接口指针的人都可以保证该对象是存活的,因此如果不知道每个持有指向您的 COM 对象的接口指针的人,并且能够请求释放您就无法确保该对象已被销毁。
你当然可以试试
for(; ; )
{
if(pFoo->Release() == 0)
break;
}
然而,即使这样你 (a) 可能会陷入死循环,(b) 那些引用你的对象的人将获得访问 violation/undefined 行为,一旦他们试图访问被销毁的对象(他们仍然希望被引用的对象是还活着)。
另一种方法是使用包装器对象并在内部管理真正的 COM 对象而不公开它。然后您将方法调用从包装器转发到内部对象。然后你可以要求你的包装器释放内部引用,这通常会导致内部对象的破坏。
使用 COM,您使用 CoCreateInstance 创建对象。
有没有办法完全破坏它,以便单元测试的下一部分可以重新开始?
每个持有引用的 COM 接口指针的人都可以保证该对象是存活的,因此如果不知道每个持有指向您的 COM 对象的接口指针的人,并且能够请求释放您就无法确保该对象已被销毁。
你当然可以试试
for(; ; )
{
if(pFoo->Release() == 0)
break;
}
然而,即使这样你 (a) 可能会陷入死循环,(b) 那些引用你的对象的人将获得访问 violation/undefined 行为,一旦他们试图访问被销毁的对象(他们仍然希望被引用的对象是还活着)。
另一种方法是使用包装器对象并在内部管理真正的 COM 对象而不公开它。然后您将方法调用从包装器转发到内部对象。然后你可以要求你的包装器释放内部引用,这通常会导致内部对象的破坏。