Простой сборщик мусора на С++ |
В листинге 2.1 приведен полный код сборщика мусора. Как уже объяснялось ранее, данный сборщик мусора функционирует благодаря созданию указателя нового типа, обеспечивающего встроенную поддержку сбора мусора, основанную на алгоритме подсчета ссылок. Сборщик мусора однопо-точный, что означает, что он полностью переносим и не зависит от среды исполнения (и не строит никаких иллюзий на ее счет). Приведенный код следует сохранить в файле с именем gc.h. При просмотре кода обратите внимание на две особенности. Во-первых, большинство функций-членов очень короткие и определены внутри их классов для повышения эффективности. Напоминаю, что функция, определенная в пределах ее класса, автоматически встраивается в его описание, что устраняет расходы на ее вызов. Только несколько функций длинны настолько, что требуют описания вне их класса. Во-вторых, прочтите комментарий в начале файла. Если вы хотите увидеть действие сборщика мусора, просто включите режим отображения, определив макрос, названный DISPLAY. В нормальном режиме оставьте DISPLAY неопределенным.
|