私はこれを稼働させるために数時間試しています。これまでのところ、メモリリークを発見しますが、それは1トンを発見し、それが現実的かどうかは分かりません。また、私は実際にメモリリークを解決できるようにファイルと行番号(私はそれが可能だが、私はそれを動作させることはできません)を見たいと思います。JNIを使用しているC++/JavaプロジェクトでCRTのツールを使用してメモリリークを検出するにはどうすればよいですか?
頻繁に呼び出されるメソッド(通常は1秒間に約60回)でメモリリークをダンプするコードを追加しましたが、大丈夫かどうかはわかりませんが、実際には "main "コードをどこに置くかを決めるのは難しいです。ここで
は、私が追加したものです。助けを
// This part is in the includes part of the file
#define _CRTDBG_MAPALLOC
#define _CRTDBG_MAP_ALLOC_NEW
#include <stdlib.h>
#include <crtdbg.h>
#ifdef _DEBUG
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif
// This part is in the method
_CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
_CrtDumpMemoryLeaks();
ありがとう!
tryakerや同様のデバッガを試してみてください - メモリリークやユーザオブジェクトを制御するのに役立ちます...バグのある行を示します。 –
事は私のファイルは.jarであり、deleakerは.exeだけを受け入れます。 JNIを通じてC++コードを呼び出すJavaプログラムで動作する類似のツールをご存知ですか?ありがとう。 – Djeezus
_CrtDumpMemoryLeaks()を常に呼び出すと、すべての割り当てがリークします。適切なトリガーにDllMain()を使用することを検討してください。 –