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