SAFEARRAY関連の関数で相談 – 固定ページ 2 – プログラミング – Home

SAFEARRAY関連の関数で相談
 
通知
すべてクリア

[解決済] SAFEARRAY関連の関数で相談

固定ページ 2 / 2

ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

現状ではVB側で実体を渡していないので問題ないとします。
これでわからなかった事は解決できました。

そらぱさん、渋木宏明(ひどり)さん ありがとうございました。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 23年前
投稿: 196
 

>気になるのは *lpsfArray が示すところにすでに SAFEARRAY の実態があったときです
ね。

これは、IDL によって決まります。
このツリーでは、IDL が一度も示されていないので不明です。

>SafeArrayCreateVector の前に開放しないとリークになるかな?

[out] の場合、コンポーネント側では引数を初期化する必要はありません。
いきなり返値をセットしてOKです。

引数が VARIANT の場合、VariantClear() することなく、また VariantInit() すること
もなく「値をセットしなければならない」です。

[in,out] の場合、まるで違う値を返すなら、いらなくなった値はコンポーネント側で
「解放しなければならない」です。

引数が VARIANT の場合、VariantClear() してから値をセットするべきです。

属性指定が無い場合、[in,out] を仮定するのが OLE の規約です。

なお、ヘッダを見てみれば分かることですが、SAFEARRAY は VARIANT の「使い方の一
例」です。


返信引用
ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

IDL では[out] で指定しています。
なので問題ですね。
これでスッキリしました

ありがとうございました


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました