2

アプリケーションのどこかにメモリ リークがあることを発見しましたが、それを絞り込むのに苦労しています。この例_CrtDumpMemoryLeaksで説明されているように関数を使用してみましたが、ファイル名は表示されません。そのため、さまざまなポイントでこのダンプ関数を呼び出すことにより、メモリ リークの最初のポイントを見つけようとしました (出力によるとかなりの数があるようです)。オブジェクトのコンストラクターの非常に早い段階で、それらの多くをすぐに取得しているようです。

さらに調査するとstd::unordered_map、ローカル変数を宣言するだけの単純なメイン関数を使用するとメモリリークが発生するという点まで、定義を使用してそれらを取得しているようです。

たとえば、次のコードではメモリ リークが発生します。

void main()
{
    _CrtDumpMemoryLeaks(); // executing this line, no memeory leaks found

    std::unordered_map<int, int> intMap;

    _CrtDumpMemoryLeaks(); // executing this line, memeory leaks found
}

この時点で私は完全に混乱しており、これを追跡しても、最初に気付いたメモリリークを見つけるのに役立つとは思えません。

どんな助けでも大歓迎です。

4

3 に答える 3