Пошук 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 до вашої функції, яка викликала виділення неудалённой пам'яті.