Как освободить память после (VARIANT*)malloc(sizeof(VARIANT))

226
12 октября 2017, 12:05

Таким образом выделяется память под переменную:

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;

Подскажите, пожалуйста, как исправить утечку памяти?

Answer 1

Память-то освобождается. А вот адрес в указателе theItem остается старый. Только теперь он указывает на мусор, а не на выделенную память. И если вы попробуете этот невалидный указатель использовать, например для записи, вашей программе может быть больно))

И, кстати, если

if (enumInterface->Next(1,theItem,NULL) == S_FALSE)
  return false;

сработает, то ваш код освобождения памяти не будет выполнен. Что потенциально влечет утечку памяти. В связи с этим рекомендую ознакомиться с концепцией RAII (Resource Acquisition Is Initialization) вообще, и smart pointers в частности - как раз придумано для изящного решения подобных проблем.

И еще непонятно, почему вы юзаете malloc вместо new.

READ ALSO
Как создать зациклить галерею ul li что бы за последнем li шел первый?

Как создать зациклить галерею ul li что бы за последнем li шел первый?

js просто двигаю в право и влево , а как сделать что бы после последнего li зациклился первый ит

209
AngularJS Позиционированный вывод фото

AngularJS Позиционированный вывод фото

Передав в функцию load идентификатор, достаю из таблицы имена файлов из которых в дальнейшем генерирую ссылки и по клику вывожу ссылки на фото

247
jQuery autocomplete нужно чтобы при клике на вариант не заполнял строку поиска

jQuery autocomplete нужно чтобы при клике на вариант не заполнял строку поиска

Итак мы начинаем вводить что-либо в строку поиска, jQuery подбирает вариантыЯ кликаю на один из вариантов и данный вариант подставляется в сроку...

254
drag на мобильных устройствах

drag на мобильных устройствах

Здравствуйте, надо реализовать на мобильных телефонах перетаскивание блоков пальцем, до этого находил drag плагины которые работали только...

244