Таким образом выделяется память под переменную:
VARIANT *theItem = (VARIANT*)malloc(sizeof(VARIANT));
Не free, не delete не удаляют выделенную память, хотя, я могу ошибаться. Вот полный код:
VARIANT *theItem = (VARIANT*)malloc(sizeof(VARIANT));
if (enumInterface->Next(1,theItem,NULL) == S_FALSE)
return false;
item = new QAxObject((IUnknown*)theItem->punkVal);
qDebug() << theItem;
free(theItem);
qDebug() << theItem;
Подскажите, пожалуйста, как исправить утечку памяти?
Память-то освобождается. А вот адрес в указателе theItem остается старый. Только теперь он указывает на мусор, а не на выделенную память. И если вы попробуете этот невалидный указатель использовать, например для записи, вашей программе может быть больно))
И, кстати, если
if (enumInterface->Next(1,theItem,NULL) == S_FALSE)
return false;
сработает, то ваш код освобождения памяти не будет выполнен. Что потенциально влечет утечку памяти. В связи с этим рекомендую ознакомиться с концепцией RAII (Resource Acquisition Is Initialization) вообще, и smart pointers в частности - как раз придумано для изящного решения подобных проблем.
И еще непонятно, почему вы юзаете malloc вместо new.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
js просто двигаю в право и влево , а как сделать что бы после последнего li зациклился первый ит
Передав в функцию load идентификатор, достаю из таблицы имена файлов из которых в дальнейшем генерирую ссылки и по клику вывожу ссылки на фото
Итак мы начинаем вводить что-либо в строку поиска, jQuery подбирает вариантыЯ кликаю на один из вариантов и данный вариант подставляется в сроку...
Здравствуйте, надо реализовать на мобильных телефонах перетаскивание блоков пальцем, до этого находил drag плагины которые работали только...