Re[2]: Зачем нужен сборщик мусора? Как жить без деструкторов
От: Аноним  
Дата: 03.08.08 12:48
Оценка:
Здравствуйте, drol, Вы писали:

D>Вы, почему-то, рассматриваете только самый примитивный случай: короткоживущие неизменяемые независимые объекты на стеке. А вот давайте возьмём долгоживущую изменяемую древовидную структуру в heap'е. Например, дерево объектов UI. Насколько простым будет управление памятью для такой штуки в C++ ? Вот в managed средах/языках вообще ничего делать не надо; порождать свои собственные структуры такого вида также элементарно.


В таких случаях я пользуюсь смарт поинтерами.
Существует проблема циклических ссылок, но я ни разу не сталкивался с такой структурой.

D>Java имеет неудобный синтаксис в этом месте. В C# же для таких случаев есть специальная конструкция using. Вариант же из C++ лично мне не нравится отсутствием явного обозначения области жизни ресурса.

D>*Хотя... Если бы это делала IDE, то было бы достаточно.

А>>В с++ надо один раз очистить ресурс в деструкторе,


D>Теоретически. А на практике, при написании деструктора C++ сразу возникает очень много ограничений. Простейший пример: исключение в деструкторе => до свидания развёртка стека и всё остальное.


Не могу представить пример где бы логика требовала исключение в деструкторе. Разумно в деструкторе выполнять действия уничтожающие объекты и соответственно не требующие дополнительных ресурсов. Я считаю, что это совсем не проблема.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.