|
> 「受け取り側の関数がメモリを解放します」というのは > 受け取り側の関数に解放するためのコーディングを施す必要がある > という意味であっておりますでしょうか?
はい、その通りです。
> その場合、ActiveX DLL側で解放用の(SysFreeStringを実行する) > メソッドを用意し、呼び出し側でそれをCALLさせるのが正しい > でしょうか?
いいえ、呼び出し側がSysFreeStringするだけです。 ActiveX DLLは気にする必要はありません。
で、UnmanagedType.BStrの場合、.NETのマーシャラは、呼び出し完了時に、SysFreeStringに該当する処理を自動的に行います。 ですのでC#の方でも解放を気にする必要はありません。
|