Что произойдет, если объект, удерживаемый интеллектуальным указателем, будет удален в другом месте?

Этот вопрос всегда беспокоит меня, особенно когда я программирую на Qt. Поскольку Qt использует деревья владения объектами, передавая указатель, например. через myBoostSharedPtr.get () может неявно передавать владение. Теперь рассмотрим случай, когда некоторый объект Qt уничтожается, и все дерево объектов уничтожается, но умный указатель все еще жив, например. как член другого класса. Что произойдет, если впоследствии смарт-указатель будет удален? Двойное удаление со всеми неприятными последствиями? Предотвращают ли это некоторые реализации интеллектуальных указателей?

12
задан Martin 2 March 2012 в 23:13
поделиться