Умные указатели C++

217
16 мая 2018, 20:40

Есть такой код:

_object = std::shared_ptr<Object>(new Object());

Если мне понадобилось, чтобы объект стал пустым то я сделаю так:

_object = nullptr;

А потом снова хочу эту переменную использовать и вызову снова

_object = std::shared_ptr<Object>(new Object());

Вопрос: будет ли утечка памяти и правильно ли так делать?

Answer 1

Утечки не будет, где ей взяться? Создавать std::shared_ptr лучше с использование std::make_shared, это позволяет иметь блок подсчёта ссылок и сами данные одним куском в памяти. Т.е. код будет выглядеть так:

_object = std::make_shared<Object>();
READ ALSO
Как перевести строку в число

Как перевести строку в число

Имеется ли в с++ готовая функция которая бы могла попытаться преобразовать строку в число (double к примеру), и при неудаче возвращала бы не ноль,...

226
не переводит в переменную

не переводит в переменную

подскажите пожалуйста у меня в переменной int res не приводит к целому значению

235
Обертка над boost::signals

Обертка над boost::signals

Недавно начал изучать boostОбратил внимание на сигналы/слоты

235
Перегруженная функция чистильщика

Перегруженная функция чистильщика

Как исправить данную ошибку

539