4 * Allocated string storage module.
6 * 31-Oct-1997 by John Hartman
12 #if !defined(_MSC_VER)
18 * Allocate space for "str", copy str into new space
19 * Return a pointer to the allocated name, or NULL if out of memory
21 char *StoreString( char *str )
23 /* To avoid wasting memory headers on small allocations, we
24 / allocate a big chunk and parcel it out as required.
25 / These static variables remember our hunk
27 #define STR_STORE_HUNK 2000
28 static char *pNextFree = NULL;
29 static int bytesLeft = 0;
34 length = strlen( str ) + 1; /* what we need, including null */
36 if (length > bytesLeft)
38 /* no space. Allocate a new hunk. We lose the pointer to any
39 / old hunk. We don't care, as the names are never deleted.
41 pNextFree = (char*)new( STR_STORE_HUNK );
42 bytesLeft = STR_STORE_HUNK;
45 /* Copy the name and terminating null into the name store */
46 pStoredString = pNextFree;
47 memcpy( pStoredString, str, length );