[gambit-list] FFI Converting std::vector to scheme-vector (best practice)
Mikael
mikael.rcv at gmail.com
Tue Aug 20 08:01:27 EDT 2013
Waait. I didn't check but I'm not so sure it's supposed to work like that -
I wonder why you had access to ___result_voidstar there at all.
Please allocate such a test structure *locally on the stack* within your
struct-test procedure, and then set ___result to it. I.e., by value and not
by pointer passing. Then paste here again.
2013/8/19 Chris Mueller <ruunsmail at gmail.com>
> On 19.08.2013 12:16, Mikael wrote:
> >
> > So in your past test with a pointered type, you did see the proper
> > behavior. And here comes what applies to the current test:
> >
> > In the case of the |struct|, |union| and |type| types, the default
> > function reclaims the copy on the C heap referenced by the internal
> > pointer (when using a C++ compiler this is done using ‘delete
> > (type*)internal-pointer’, which calls the destructor of type if it
> > is a class) and returns ‘___FIX(___NO_ERR)’.
> >
> >
> > Can you paste your full test code here?
> >
>
> Of course :)
>
> ;; struct definition
> (c-declare "struct test { int a; int b; };")
>
> (c-define-type struct-test (struct "test"))
>
> (define struct-test
> (c-lambda () struct-test "___result_voidstar = new test;"))
>
> ;; test code
> (load "test")
>
> (define (alloc-struct n)
> (let loop ((i 0))
> (if (< i n)
> (let ((a (struct-test)))
> (loop (+ i 1))
> (write "FIN")))))
>
> (alloc-struct 100000000000)
>
>
>
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20130820/edd36517/attachment.htm>
More information about the Gambit-list
mailing list