Visual Studio メモリリークを探す

やあ

間違ってたりしたら教えていただけると幸いです。

環境

Visual Studio 2022 Community

やる

まずメモリリークを起こす

#include <chrono>
#include <thread>

int main()
{
    while (true)
    {
        int* p = new int(5);
        std::this_thread::sleep_for(std::chrono::milliseconds(30));
    }
    return 0;
}

デバッグを開始する

F5を押すかメニューからデバッグを開始

プロセスメモリが徐々に増加しているのがわかる。

何が原因でメモリリークを起こしているのか調べる

まずスナップショットを有効にする

ループ内やdelete, resetなどの後にブレークポイントを設定する

スナップショットを作成


続行する

次のブレークポイントに差し掛かったところでもう一度スナップショットを作成

なんか知らんけど増えてるのがわかる

数字のところをそれぞれクリック

今回は単純にintの割り当てが増えているのがわかる。

クリックする

こんなかんじで割り当てられた場所がわかる

ちゃんと解放するようにする

#include <chrono>
#include <thread>

int main()
{
    while (true)
    {
        int* p = new int(5);
        std::this_thread::sleep_for(std::chrono::milliseconds(30));
        delete p;
    }
    return 0;
}

おしまい。