This makes it possible to define what happens when Great Circle automatically frees a specific structure, like one that has opened a file or communications port. The finalization function, which would simply close the file or port, is registered with Great Circle through a call to gcDeclareFinalizer. In the call, you specify the object and the finalization function name. Unlike the transparent mode that requires just a relink to activate, the GCPointers mode is more complex. With the complexity, however, comes more control.
Smart pointers are classes whose constructors note the exact location of the pointers in memory.
Because of this, Great Circle does not need to scan to determine memory usage as it does in GCTransparent mode. GCPointers is also the only mode available if you want to use Great Circle with existing 16-bit code. To use GCPointers, I had to change my class definitions to be derived from Great Circle's gc class. Then I needed to make minor modifications to the pointers to my classes in their declarations. Once changed, I could use the pointers in the program without further changes to my code.