Есть класс singleton, его instance реализован через shared_ptr :
public:
static CObject* Instance()
{
if (!_instance)
{
_instance.reset(new CObject());
}
return _instance.get();
}
private:
static std::shared_ptr<CObject> _instance;
Вызывается CObject::Instance() из разных мест в коде...
Вопрос : безопасно ли вот так использовать shared_ptr в singleton? Наткнулся на ситуацию, когда при удалении одного класса удалился и shared_ptr<CObject>, хотя он мне ещё нужен был...
Как вообще компилятор определяет в каком месте кода именно нужно удалить shared_ptr?