Есть такой код:
_object = std::shared_ptr<Object>(new Object());
Если мне понадобилось, чтобы объект стал пустым то я сделаю так:
_object = nullptr;
А потом снова хочу эту переменную использовать и вызову снова
_object = std::shared_ptr<Object>(new Object());
Вопрос: будет ли утечка памяти и правильно ли так делать?
Утечки не будет, где ей взяться? Создавать std::shared_ptr лучше с использование std::make_shared, это позволяет иметь блок подсчёта ссылок и сами данные одним куском в памяти. Т.е. код будет выглядеть так:
_object = std::make_shared<Object>();
Сборка персонального компьютера от Artline: умный выбор для современных пользователей