6

ここで見つけたこのスニペットのような行番号でmsvcメモリリーク検出を有効にしようとしています:

Detected memory leaks!
Dumping objects ->
C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18} 
normal block at 0x00780E80, 64 bytes long.
 Data: <                > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.

プリプロセッサ定義を設定しようとしました

_CRTDBG_MAP_ALLOC

プロジェクトのプロパティで手動で取得しますが、これしか取得できません。

Dumping objects ->
{1466} normal block at 0x00BD4DD0, 40 bytes long.
 Data: <(o;   ; (o;   1 > 28 6F 3B 00 90 A9 3B 00 28 6F 3B 00 00 D6 31 10

行番号なし。また、BOOST_TEST_NO_MAINを使用して手動でメインを定義し、次のように自分でダンプしようとしました。

int main( int argc, char* argv[] )
{
    int res = ::boost::unit_test::unit_test_main( &init_function, argc, argv );  
    _CrtDumpMemoryLeaks();
    return res;
}

しかし、成功もしませんでした。これはどのように行うことができますか?

4

3 に答える 3

5

Boost.Testを使用すると、-detect_memory_leaks ="allocationnumber"を使用できます。

于 2011-09-24T19:07:20.400 に答える
4

MSVCでは、次のコードでブレークポイントを割り当て番号1466に設定できます。

  _crtBreakAlloc = 1466

または、[ウォッチ]ウィンドウで_crtBreakAlloc、アプリケーションの起動後に1466を追加して値を付けることができます(もちろん、メイン関数にブレークポイントが必要です)。MSDNの詳細

于 2011-09-23T07:29:11.203 に答える
0

デバッガーを使ってみてください!たとえば、deleakerを使用すると、スタックを選択して、メモリが割り当てられた場所を確認できます。

于 2011-11-21T16:09:12.053 に答える