Есть класс 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?