2

意図的にメモリ リークを作成するために、次のコードを記述しました。

#include <windows.h>

int main(int argc, char* argv[])
{
    while(1)
    {
        char *ch1 = new char[10];
        char *ch2 = new char[5];
        char *ch3 = new char[2];
        Sleep(5);
    }
    return 0;
}

LeakDiag を使用してログを取得し、 LDGrapherを使用して次のグラフを作成しました。

さて、私の質問は、リーク グラフに 3 つのアドレスしか表示されないのはなぜですか? で新しいポインタを作成し続けているwhile(1)ため、多くのアドレスでメモリ リークが発生していますか?

ここに画像の説明を入力

4

1 に答える 1

0

windows.h の組み込み 「これを Windows ボックスで実行していると仮定します」 * Windows でのメモリ管理は、Linux に比べてはるかにスマートです。

Linux で同じプログラムを実行してみて、グラフを再描画して違いを確認してください。

于 2015-04-30T12:55:25.950 に答える