View source code
Display the source code in gc/impl/manual/gc.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Module gc.impl.manual.gc

This module contains a minimal garbage collector implementation according to published requirements. This library is mostly intended to serve as an example, but it is usable in applications which do not rely on a garbage collector to clean up memory (ie. when dynamic array resizing is not used, and all memory allocated with 'new' is freed deterministically with 'delete').

Please note that block attribute data must be tracked, or at a minimum, the FINALIZE bit must be tracked for any allocated memory block because calling rt_finalize on a non-object block can result in an access violation. In the allocator below, this tracking is done via a leading uint bitmask. A real allocator may do better to store this data separately, similar to the basic GC.

Authors

Sean Kelly

License

Boost License 1.0.