You can call this function to set a segment limit. Each segment keeps track of the actual memory allocated to the segment. When a new piece of memory allocated in a segment the calculated segment size is increased by the size of the memory chunk. When a piece of memory is release the calculated size of the segment is decreased.
Whenever a segment approaches its limit the next allocation function requesting memory that would exceed the limit returns NULL and does not allocate memory.
The value of the limit is the number of bytes allowed for the segment. This is the requested number of bytes without the segment management overhead.
Setting the limit to zero means no limit except the limits of the underlying memory allocation layers, usually malloc.
You can dynamically set the limit during handling the memory at any time except that you should not set the limit to zero unless the segment is empty and you should not set the limit to a positive value when the actual limit is zero (no limit) and the segment is not empty. This restriction is artificial in this release but is needed to be followed to be compatible with planned future developments.
This function sets the limit for the segment pointed by p and returns the old value of the segment.
long alloc_SegmentLimit(void *p,
unsigned long NewMaxSize
){