Guides/DLLs/Memory Management
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:
verb | description |
---|---|
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 length is a count of bytes. 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.
memf address
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.