Some interpreters do not have the RexxFreeMemory() API. Instead, they expect you to figure out how to free the buffer. For some interpreters, that may be a call to some operating system function. (ie, On Windows, there's VirtualFree() as well as LocalFree() and GlobalFree()). For other interpreters, it may be some C library function such as free(). It's a crap shoot whether an interpreter supports RexxFreeMemory(). I strongly suggest not bothering to support an interpreter that doesn't offer RexxFreeMemory() (or you may have memory leaks, and/or trouble figuring out how to free the buffer safely). Use Reginald instead.

But if you really must use an interpreter that doesn't have RexxFreeMemory(), then supply your own return buffer to RexxStart(), and make it larger than it ever needs to be. If you're sure that you're running a REXX script that won't try to return anything larger than the buffer you supply, then you don't have to ever worry about RexxFreeMemory(). You can use all REXX interpreters without worrying about memory leaks.