やあ
間違ってたりしたら教えていただけると幸いです。
環境
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; }
おしまい。