Hi Kashyap,

> Could you please share the example where you shared how native code
> interface could be used to malloc a section of the heap? I believe you
> shared this in the last PiCon.

I don't remember exactly, but it could have been something like (using pil21):

   # Allocate 99 bytes
   : (setq P (%@ "malloc" 'P 99))
   -> 512227229696

   # Store a long integer -1 (or FFFFFFFFFFFFFFFF)
   : (struct P NIL (-1 . 8))
   -> NIL

   # Read a list of 8 bytes
   : (struct P '(B . 8))
   -> (255 255 255 255 255 255 255 255)

   # Store 3 bytes
   : (byte P 65) (byte (inc P) 66) (byte (+ P 2) 0)
   -> 0

   # Read 8 bytes again
   : (struct P '(B . 8))
   -> (65 66 0 255 255 255 255 255)

   # Read the same as a string
   : (struct P 'S)
   -> "AB"

   # Free the memory
   : (%@ "free" NIL P)
   -> NIL


Instead of heap malloc() / free() you can (again, pil21) also use a local buffer
on the stack:

   : (buf P 99
      (byte P 65)
      (byte (inc P) 0)
      (struct P 'S) )
   -> "A"

☺/ A!ex

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to