Thanks Alex,
Is the allocated memory purged by the GC in your example? If not, would it
be straightforward to plug it in a manner that the GC handles the free?
Regards,
Kashyap

On Thu, Nov 12, 2020 at 11:21 PM Alexander Burger <a...@software-lab.de>
wrote:

> 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