Some DLL procedures return pointers to memory or require parameters of pointers to memory that cannot be provided by referencing a J array. The following verbs, defined in the standard library, are provided to allocate, free, read and write memory:
|mema||allocate bytes of memory|
|memr||read bytes from memory (as type)|
|memw||write bytes to memory (from type)|
|memf||free memory allocated by mema|
mema allocates memory. The result is an integer memory address. A 0 result indicates the allocation failed. For example:
address=: mema length
memf frees memory. The argument could be a mema result or pointer returned by a procedure. A 0 result is success and a 1 is failure.
memr reads data from memory. A _1 count reads up to the first 0 (read a C string).
data=: memr address,byte_offset,count [,type]
memw writes data to memory. If type is char, count can be 1 greater than the length of the string left argument, in which case a 0 is appended (writing a C string).
data memw address,byte_offset,count [,type]
The memr and memw type parameter is 2 4 8 or 16 for char integer float or complex. The default is 2. The count parameter is a count of elements of the type.