Здравствуйте, johny5, Вы писали:
J>А главное тут в том что ты можешь сделать delete когда тебе угодно, а в C# нет.
J>Общались с Джавистом пересевшим на С++. Мол висящие указатели, явная чистка памяти, и т.д. Всё это плохо и известно. Он предлагает универсальное решение — shared_ptr на всё. Я задал контрольный вопрос: есть кнопка, к ней привязан звук из менеджера звуков. Мы решили перегрузить менеджер звуков. Нам для этого старый нужно удалить а в новом все звуки загрузить заново. И что я слышу от него, оказывается это нормально в данном случае что кнопка на UI не даст старому звуковому менеджеру умереть!! А если там нужно драйвер переиниализировать, старый обязательно должен выгрузить своё.
Джавист в чем-то прав. Надо использовать shared_ptr и weak_ptr. У кнопки был бы weak_ptr и она не мешала бы удалить менеджер звуков.
Что касается C# — никто не мешает тебе сделать weak_ptr в C#. Просто там никто так не делает, слишком неудобно/сложно.