> -- Galkov писал(а):
> Хм... А как производится :?:В процессе исполнения всегда существует некий пополняемый/удаляемый "стек адресов", в которых находятся ссылки на хип :?:Если существует, кто им управляет ???Это прямые ссылки... А косвенные ???
Маркировка производится временной установкой младшего бита у указателя. Адреса глобальных переменных известны, список загруженных модулей есть в модуле Kernel (modList: Module). Для каждого составного типа известно, по каким смещениям в нём находятся указатели, так что косвенные ссылки обойти тоже не проблема.

Исходники GC - см. Kernel.Collect и используемые им процедуры. Процедура выделения памяти под объект - Kernel.NewRec (вызывается, когда в исходнике встречается NEW(ptr)).

> -- Galkov писал(а):
> Интересно также понимание преимуществ (или недостатков) именно такой стратегии.Которое одним вопросом и не сформулируешь....А без понимания - огромный дискомфорт имеет место быть :)
http://en.wikipedia.org/wiki/Garbage_co ... er_science)#Naive_mark-and-sweep