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

Reply via email to