通知
すべてクリア
固定ページ 2 / 2
前へ
Topic starter
2003年7月30日 12:48 PM
現状ではVB側で実体を渡していないので問題ないとします。
これでわからなかった事は解決できました。
そらぱさん、渋木宏明(ひどり)さん ありがとうございました。
2003年7月30日 1:11 PM
>気になるのは *lpsfArray が示すところにすでに SAFEARRAY の実態があったときです
ね。
これは、IDL によって決まります。
このツリーでは、IDL が一度も示されていないので不明です。
>SafeArrayCreateVector の前に開放しないとリークになるかな?
[out] の場合、コンポーネント側では引数を初期化する必要はありません。
いきなり返値をセットしてOKです。
引数が VARIANT の場合、VariantClear() することなく、また VariantInit() すること
もなく「値をセットしなければならない」です。
[in,out] の場合、まるで違う値を返すなら、いらなくなった値はコンポーネント側で
「解放しなければならない」です。
引数が VARIANT の場合、VariantClear() してから値をセットするべきです。
属性指定が無い場合、[in,out] を仮定するのが OLE の規約です。
なお、ヘッダを見てみれば分かることですが、SAFEARRAY は VARIANT の「使い方の一
例」です。
Topic starter
2003年7月30日 9:10 PM
IDL では[out] で指定しています。
なので問題ですね。
これでスッキリしました
ありがとうございました
固定ページ 2 / 2
前へ