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