Добрый день.
Пишу простой код:
int main(){
int ret=0;
char* ddd = new char[100];
return ret;
}
Создаю debug проект в VS2017. Запускаю проект в отладчике. Все нормально завершается без всяких замечаний, хотя налицо утечка памяти.
Вопросы:
Разве встроенный отладчик VS2017 не ловит утечки памяти? Или надо где-то в настройках включить переключатель, чтобы встроенный отладчик VS2017 начал ловить утечки памяти?
Если встроенный отладчик VS2017 не ловит утечки памяти, то какой отладчик их ловит?
Когда-то я работал на древнем Borland C++ Builder 6.0, так на его отладчике такие утечки памяти прекрасно ловились. А тут новейшая IDE от ведущего производителя и утечка памяти не ловится.
Спасибо.
У майкрософта для дампа утечек есть своя либа (https://msdn.microsoft.com/en-us/library/x98tx3cf.aspx).
По умолчанию, обычное консольное приложение вам ничего не покажет.
Чтобы увидеть утечки надо добавить пару строк:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
int main()
{
int ret = 0;
char* ddd = new char[100];
_CrtDumpMemoryLeaks();
return ret;
}
И видим ожидаемый вывод:
Detected memory leaks!
Dumping objects ->
{74} normal block at 0x03326468, 100 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
Для виндовсов есть программы, которые отслеживают утечки и прочие грязные штучки, типа использования неинициализированных переменных, без необходимости помещать что-то дополнительное в код. В основном, это проприетарные изделия, но есть и более доступные и бесплатные.
Возможно, Вас заинтересует обсуждение вопроса, близкого Вашему, на stackoverflow.com
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости