3.5 Pointer Types
The address referenced by a _pointer value must not refer to memory managed by the garbage collector (unless the address corresponds to a value that supports interior pointers and that is otherwise referenced to preserve the value from garbage collection). The reference is not traced or updated by the garbage collector.
The equal? predicate equates C pointers (including pointers
for _gcpointer and possibly containing an offset) when they
refer to the same address—
value
Although a _gcpointer can reference to memory that is not managed by the garbage collector, beware of using an address that might eventually become managed by the garbage collector. For example, if a reference is created by malloc with 'raw and released by free, then the free may allow the memory formerly occupied by the reference to be used later by the garbage collector.
The cpointer-gcable? function returns #t for a cpointer generated via the _gcpointer type, while it generates #f for a cpointer generated via the _cpointer type.
As a result type with a function type, _racket or _scheme permits multiple values, but multiple values are not allowed in combination with a true value for #:in-original-place? or #:async-apply in _cprocedure or _fun.
A type generated by _cprocedure or _fun builds on _fpointer, and normally _cprocedure or _fun should be used instead of _fpointer.