Re: Garbage collection vs manual memory management
От: Abyx Россия  
Дата: 08.01.15 13:31
Оценка: +2
Здравствуйте, johny5, Вы писали:

J>А главное тут в том что ты можешь сделать delete когда тебе угодно, а в C# нет.


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


Джавист в чем-то прав. Надо использовать shared_ptr и weak_ptr. У кнопки был бы weak_ptr и она не мешала бы удалить менеджер звуков.

Что касается C# — никто не мешает тебе сделать weak_ptr в C#. Просто там никто так не делает, слишком неудобно/сложно.
In Zen We Trust
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.