Dynamic Memory Management

The XBinder run-time uses several different memory management schemes in order to provide flexibility in handling different types of application's memory requirements. The following are the schemes available in this release:

The standard memory allocation algorithm simply maps XBinder run-time function calls directly to the C standard run-time memory functions malloc, free, and realloc. (Note: in some environments such as some embedded RTOS's the reallocfunction may not be available. The built-in run-time provides a custom implementation of this function using mallocand freefor these cases). The advantages of standard management are simplicity and space-optimization. The primary disadvantage is performance - frequent calls to mallocand freecan be detrimental to performance.

The nibble-allocation algorithm is designed to improve performance in the case where frequent requests for small amounts of memory are made. This is typical of many data-binding applications due to unconstrained types being declared within the schema. The way this algorithm works is 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 mallocand freefunctions.

Finally, it is possible for a user to build in his or her own custom management by implementing the functions defined within the standard XBinder run-time memory management interface.

The main entry points to the memory management system for users are the rtxMemAlloc, rtxMemFree, rtxMemFreePtr, and rtxMemReallocfunctions. These are the functions that should always be used for doing memory management - not the built-in C memory functions.