問題タブ [bstr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
196 参照

c++ - `[in,out]` パラメータの再割り当てがオプションになるのはいつですか?

パラメータが[in,out] BSTR*あり、文字列の内容を変更したいが、同じ長さを維持したい場合、それを再利用できますか、それとも再割り当て/解放して割り当てする必要がありBSTRますか?

MSDN は次のように述べています

パラメーターの場合[in, out]、呼び出し元がメモリを割り当て、メソッドまたはプロパティは必要に応じてメモリの割り当てを解除および再割り当てできます。呼び出し元は最終的にメモリを削除する責任があります。

より完全にするために、それはいつオプションですか?

0 投票する
2 に答える
198 参照

memory-management - [out] BSTR* パラメータのガベージ初期値は大丈夫ですか?

MSDNによると:

パラメーターの場合[out]、メソッドまたはプロパティがメモリを割り当て、呼び出し元がメモリを解放する責任があります。

正しいのは次のうちどれですか。

0 投票する
1 に答える
56 参照

c++ - operator TYPE () とオブジェクトのアドレスの取得

ATL クラスCComBSTRには、を返すBSTRメンバーm_strと があります。operator BSTR ()m_str

さて、関数がBSTR *を引数としてとる場合、 のアドレスを渡しても大丈夫CComBSTRですか?

コンパイラは文句を言いませんが、本当に問題ないのなら、なぜ動作するのでしょうか?

0 投票する
0 に答える
422 参照

c++ - _com_util::ConvertStringToBSTR - アクセス違反

COM サーバーのメソッドを呼び出すと、_com_util::ConvertStringToBSTR でランダムにアクセス違反エラーが発生します。

RegisterQuote 署名:

詳しくは:

なぜこのバグが発生するのかわかりません。必要に応じて追加情報を提供できます。

アップデート:

ここに画像の説明を入力

ここに画像の説明を入力

0 投票する
1 に答える
1153 参照

c++ - BSTR 文字列を _bstr_t または CComBSTR コンストラクターに渡すときのアクセス違反

COM サーバーから渡される BSTR 文字列があります。この文字列を _bstr_t (または CComBSTR) コンストラクターに入れると、アクセス違反が発生します。この例外を調べたところ、この例外は BSTR が空 (または null) の場合にのみ発生することがわかりました。

null の BSTR を明示的に _bstr_t コンストラクターに配置しようとしましたが、これは正常に機能します。

しかし、COM サーバーから渡される BSTR ではこれは機能しません。文字列が空または null (または破損している可能性がありますか?) の場合、アクセス違反の例外が発生します。

この回避策がうまく機能することがわかりました:

しかし、これが _bstr_t または CComBSTR ラッパーで直接機能しない理由を知りたいです。

アップデート:

COM サーバーが BSTR 文字列を渡す方法:

0 投票する
0 に答える
253 参照

c++ - 複数のタグ名による要素の出力 - msxml - C++ での xml 解析

MSXML を使用して xml ファイルを解析しようとしていますが、すべてのノードではなく特定のタグ (ノード) を解析したいと考えています。xml 解析用に全体に追加された 2 行の下に、すべてのノードの出力が表示されます。L" " を L"tag_name" に置き換えると...結果は得られますが、1 つだけでなく、より多くのタグを含めたいと考えています。助けてください。

//検索するノードの名前を持つ変数: BSTR strFindText = L" ";//" " すべてのノードを出力することを意味します