The libscheme
library uses Hans Boehm and Alan Demers'
conservative garbage collector [1]. It provides a
replacement for the C library function malloc()
called
GC_malloc()
. The storage that is allocated by
GC_malloc()
is subject to garbage collection. The collector
uses a conservative approach, meaning that when it scans for
accessible objects it treats anything that could possibly point into
the garbage collected heap as an accessible pointer. Therefore, it is
possible that an integer or a floating point number that looks like a
pointer into this area could be treated as a root and the storage that
it points to would not be collected. In practice, this rarely
happens.
Users of libscheme
can use the garbage collector in their own
program and are strongly encouraged to make use of it when extending
libscheme
. Normally the user can simply call
scheme_alloc_object()
to allocate a new Scheme_Object
,
but occasionally other types of objects need to be allocated
dynamically.
The Boehm/Demers collector is freely available and can run on most any 32-bit Unix machine.