Сборщик мусора и размещение объектов в стеке
От: PC Car  
Дата: 13.12.07 14:00
Оценка:
Давно не программировал, поэтому если встретятся фактические ошибки, делающие неверной цепь рассуждений, просьба просто указать на них. Если это трюизмы (== баян, если в словарь лазить лень), то причина в том же.

Насколько мне известно, память в языках типа Явы или Шарпа — не ресурс. Вернее, ресурс, но управляет им некая внешняя по отношению к программе штуковина — рантайм или виртуальная машина, или еще какой контейнер.

У программистов на плюсах был излюбленный прием — использовать пару конструктор-деструктор для контроля за выходом из блока кода. Например, CWaitCursor() делал запрос к API на отрисовку песочных часов, а ~CWaitCursor() вертал все в зад. Соответственно, можно было разместить на стеке анонимный объект в любом блоке, который управлял курсором автоматически и этот трюк был эксепшено-безопасным, что немаловажно. Конструкции finally не требовалось.

Теперь объекты размещаются в куче, но время их уничтожения недетерминировано.

Почему не ввести вместо using на такой случай специальный тип — стековый класс? Это ведь не потребует усложнения синтаксиса. Просто у структуры появится деструктор с детерминированным временем вызова.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.