Пошук memory leaks в visualstudio

Пошук і усунення витоків пам'яті в Visual Studio.

Знайти витоку пам'яті в програмі можна в такий спосіб:

Перше що слід зробити:

В заголовки який включається усіма іншими файлами (наприклад "stdafx.h") в початок потрібно помістити наступні рядки:

Цим ми замінюємо функції malloc і free іншими malloc_dbg і free_dbg, які будуть виконувати перевірки.
Потім в функцію, де починається робота програми (WinMain ()) в початок додаємо наступне:

Завдяки цій функції після повернення вашою програмою контролю системі, всі витоки пам'яті будуть надруковані у вікні Output в наступному вигляді:

У фігурних дужках показується номер виділення пам'яті, яка не була видалена.

Можна перейти до місця в коді, де пройшло виділення пам'яті по подвійному кліку на сходинці
C: \ PROGRAM FILES \ VISUAL STUDIO \ MyProjects \ leaktest \ leaktest.cpp (20).
, але зазвичай це не сильно допомагає.

Також можна змінити місце, куди буде писатися інформація про витоки за допомогою функції _CrtSetReportMode (див. MSDN)

Тепер переходимо до другої частини - позбавлення від витоків:
На початок функції, де починається робота програми потрібно додати:

після цього запустити Debug режим.

У момент виділення вилетить віконце з помилкою ( "User breakpoint").

Потрібно натиснути кнопку break і переміщатися вгору у вікні Call Stack до вашої функції, яка викликала виділення неудалённой пам'яті.

Схожі статті