Its address will not change. It will stick around until it is explicitly
freed (it could be freed by you with memf or by a c library with free). I had
vague plans to implement something that could be freed automatically, but have
not done so yet. However, depending on usage, you could pass in a j array
instead (character array with the appropriate length), which would avoid the
need to free manually.
On Tue, 18 Jul 2023, Igor Zhuravlov wrote:
To prepare some structure as argument to DLL call, a memory should be
allocated by mema before call, and freed by memf after use. So that
structure's life cycle is under the manual control.
I want to delegate this care to JE, something like this:
struct=. SIZEOF # ' ' NB. equiv. to:
addr=. 15!:14 < 'struct' NB. struct=. mema SIZEOF
NB. fill the struct...
SIGNATURE 15!:0 < < addr NB. call DLL with addr as a sole parameter
return. NB. let JE to do (memf addr) implicitly
But the question here is: does JE keep the result of (15!:14 < 'struct')
permanent? Or situations are possible when a noun's data address can change
(GC, unaliasing etc)?
--
Regards,
Igor
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm