The default ASN1C run-time memory manager uses an algorithm called
the nibble-allocation algorithm. Large blocks of memory are allocated up
front and then split up to provide memory for smaller allocation
requests. This reduces the number of calls required to the C
malloc
and
free
functions, which are very expensive
in terms of performance.
The large blocks of memory are tracked through the ASN.1 context
(OSCTXT
) structure. For C, this means
that an initialized context block is required for all memory allocations
and deallocations. All allocations are done using this block as an
argument to routines such as
rtxMemAlloc
. All memory can be released
at once when a user is done with a structure containing dynamic memory
items by calling
rtxMemFree
. Other functions are
available for doing other dynamic memory operations as well. See the
C/C++ Run-time Reference Manual for
details on these.