Страницы

Поиск по вопросам

пятница, 14 декабря 2018 г.

Освобождение памяти

Есть вектор указателей на объекты. Как лучше всего освобождать память: free, delete или erase?


Ответ

Начнем с того, что free категорически противопоказан. Это C-шная функция, работающая только в паре с malloc
erase - это функция, которая удаляет элементы из вектора. Но поскольку у вас вектор указателей, то автоматически память, на которую они указывают, освобождаться не будет (ведь вас это интересует?)
Так что надо перед erase пробежаться и освободить объекты самому. Если хотите, чтобы все делалось надежно и просто - используйте unique_ptr (если вектор единолично :) владеет объектами; если нет - shared_ptr<>).

Комментариев нет:

Отправить комментарий