マイクロソフトでは、リークチェックギアをデバッグビルドで使用すると、何十年ものバグがあります。リークは、typeinfo.name()
のようなC++型情報を使用しているときにランタイムライブラリによって行われた割り当てから報告されます。 Microsoft ConnectのMemory leaks reported by debug CRT inside typeinfo.name()も参照してください。Microsoftのtypeinfo.name()メモリリークを修復する方法はありますか?
私たちは、ほぼ同じ時間の間漏れがあるため、エラーレポートとユーザーリストのディスカッションを受けています。マイクロソフトのバグは、ユーザープログラムからの実際の漏洩を隠す可能性もあります。後者の点は私にとって特に気になる点です。なぜなら、マスキングのために実際の問題に傾いていない可能性があるからです。
typeid(T)
とtypeinfo.name()
を使用しているため、リークを撲滅しようとしたいと思います。私の質問は、Microsoftのバグを回避するにはどうしたらいいですか?利用可能な回避策はありますか?
( 'typeinfo.nameを使用しないでください) '? – Yakk
Samに感謝します。 [ソースコードのライセンス]に関する情報はありません(http://www.google.com/search?q=license+microsoft+c%2B%2B+runtime+source+code)。リンクがありますか?また、この場合、修正プログラムはどのように機能しますか?すべてのユーザーがライセンスを取得する予定ですか?あるいは、 '.local'のDLLリダイレクトとのサイドバイサイドリンクを使ってライセンス交付して配布しますか?後者は実行可能な選択肢のようには見えませんが、私はプロセスを理解しています。 – jww
提案:あなたは 'typeinfo.name()'を使っているすべての場所を再訪し、いくつかのMeyerのシングルトン関数やテンプレートなどを呼び出すものに置き換えてください。少なくとも、 "漏れ"の量は限られています。静的変数。 –