2012-04-17 9 views
1

貧弱なフォーマットのお詫び - 私の電話でこれを書いています。私のMFCアプリケーションで偽のメモリリークが報告されました

MFC(やcli)アプリを終了するときに、多くの誤ったメモリリークが報告されています。調査に

、MFC AfxDiagnosticInit機能は早すぎると呼ばれている、と私のCWinAppのデストラクタが

どのように私はAfxDiagnosticInitが呼び出されたことを確認することができます多くの偽陽性のメモリリークが生じ、呼び出される前に、結果的にメモリリークのダンプが発生しています私の静的変数デストラクタ(例えばCMyApp)は、リークダンプが始まる前に呼び出されるようになりましたか?

+0

とのより適切な場所にリークをダンプすることができますか?これは 'malloc()'/'free()'(私の経験による)でのみ正しく動作するかもしれません。しかし、もちろん、 'malloc' /' free'はC++コードには属しません。 – RageD

+0

期待されているようです:http://msdn.microsoft.com/en-us/library/x98tx3cf(v=vs.110).aspx(下段 - 「誤認」) –

答えて

1

私は本当の問題を発見しました。それは、それが混合モードのC++/CLIアプリケーションであり、CLIがCRTをシャットダウンできないという事実に関連していました。ここ

改訂質問:、

AfxEnableMemoryLeakDump(FALSE); 

これは、ドキュメントのVisual Studio 2010以降でサポートされています代替ソリューションとして Mixed-mode C++/CLI app not shutting down CLR correctly

0

CWinAppが構築されている同じ機能WinMain()を見つけて、AfxDiagnosticInit()を配置してみてください。

0

は、あなたも使ってMFCでダンプ自動メモリリークを無効にすることができますhereを参照してください。

あなたは窓が `new` /` DELETE`ためのリーク検出を持っています_CrtDumpMemoryLeaks();

関連する問題