BSTR を in パラメーターとして受け取る ATL COM コンポーネント メソッドがあります。このメソッドへの各呼び出しを配列に追加する必要があります。SAFEARRAY は固定サイズであるため使用できないため、std::vector が最も簡単な選択になると考えていました。もちろん、ベクターに追加するたびに SysAllocString を呼び出す必要があります。これは、ベクトルが破棄される前に各エントリに対して SysFreeString を呼び出す必要があることを意味します。
私はより簡単でクリーンなソリューションを探していて、ベクターを vector<_bstr_t> として宣言することを考えていました。これには自動クリーンアップが含まれます。しかし、私の頭の片隅にあるのは、事実上スマート ポインターを標準のコンテナーに保持することに警鐘を鳴らしていることです。私の心配は正当化されますか、それとも安全にこれを行うことができますか? そうでない場合、他のより良い解決策はありますか?