我相当确定我可以安全地做到:
void funcA(VARIANT &V,_variant_t &vt)
{
vt = V;
}
但是反过来呢:
void funcB(VARIANT &V,_variant_t &vt)
{
V = vt;
}
我在我的应用程序中看到了一些非常奇怪的行为,我将其归结为与 COM 相关的线程问题。但后来我想知道我是否错误地使用变体搞砸了内存。在 funcB 中,VARIANT V 是为 COM 调用准备的安全数组的一部分。使用我的 V=vt 行,我是否在做一个浅拷贝,当同一个变体被释放两次时会破坏事情?
我真的很喜欢 _variant_t 并避免使用所有 ::VariantXXX 方法,有没有一种巧妙的方法可以在 funcB 中使用 _variant_t 来自动复制?