私は安全にできると確信しています:
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 行で、同じバリアントの割り当てが 2 回解除されると問題が発生する浅いコピーを行っていますか?
私は _variant_t が本当に好きで、すべての ::VariantXXX メソッドを避けています。コピーを自動化するために funcB で _variant_t を使用するきちんとした方法はありますか?