2012-05-02 16 views
0

バルクコードの実行中に発生しているリークを分析しようとしています。リークはdbxで検出され、リークは以下のように表示されます。文字列を置換するメモリリーク

Total  Num of Leaked  Allocation call stack 
    Size  Blocks Block 
        Address 
========== ====== =========== ======================================= 

272033 4431  -  operator new < std::basic_string<char,std::char_traits<char>,std::allocator<char> >::__getRep < std::basic_string<char,std::char_traits<char>,std::allocator<char> >::replace 

誰もこのタイプのリークに直面しましたか。 DBXコメントを使用してリークを分析することは可能ですか?コード内のリークの場所を突き止める巨大なコードであるため、

+3

本当にリークですか?プロセスの規模が大きくなるのを見たことがありますか?私が尋ねる理由は、ツールでは必ずしも実際の*漏れではない漏れが報告されていることがよくあります。通常はサードパーティ製のコードです。 –

+0

はい、プロセスのサイズが何かのように大きくなっていることは確かです。スタックのメモリ全体が失われ、メモリがないためにプロセスがクラッシュするようになりつつあります。これは、再検査の際の反復処理中に起こります。 – sandy

+0

まあ、公正なコメント。 「Purify」(商業的ですが)のようなツールがあります。使用できるはずですが、それは起こっている場所を特定するだけで、STLにあれば大きな問題です。私はまたあなたが役に立つと思うかもしれない以下のリンクを掲載しました。 –

答えて

1

メモリ管理の問題を特定するのに役立つlibumemでアプリケーションを実行しようとします。

コードベースが大きいにもかかわらず、をターゲットとしたコードレビューでこれを解決することができます。

0

すぐに確認するとthis issueが表示され、見た目に似ています。それはかなり古いです - どのコンパイラのバージョンを使用していますか?

同じ問題があり、完全なアップグレードが可能でない場合は、そのコードがどこで呼び出されているかを特定し、問題が発生しないように修正してください。