Добрый день.
Пишу простой код:
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
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я хочу отловить момент, когда приложение пытаются закрыть и убить процесс своей же программы через taskkillСделать я это хочу, потому что при...
Есть 2 действительных числа, x и y, которые вводятся с клавиатурыНужно проверить попадет ли точка в заданную область, область это рисунок
Почему для табов, которые активны (2 и 3), пкм срабатывает, а для 4, который неактивен - не срабатывает? Надо mouseevent'ы включить для него?
Как сравнить написано в LineEdit с каким-нибудь QString и вывести true/false