[gambit-list] FFI Converting std::vector to scheme-vector (best practice)

Mikael mikael.rcv at gmail.com
Mon Aug 19 06:16:37 EDT 2013


2013/8/19 Chris Mueller <ruunsmail at gmail.com>

> On 19.08.2013 06:13, Mikael wrote:
> > std::string requires delete to be used for proper deallocation and
> > free() might just partially deallocate it, no? - what about trying with
> > some more ordinary struct like tm ?
>
> Could be, but i think this is not the case. The documentation mentioned
> if gambit is using g++ it should actually use 'delete (type*)
> internal-pointer'.
>

Ah good point.


>
> I've also checked this with a POD struct:
>
> struct test { int A; int B }
>
> It's no difference if
>    * struct test is allocated with new
>    * struct test is allocated with malloc
>
> It's also leaking memory.
>


So the manual goes:

When the release-function is not specified or is #f a default function is
> constructed by the C-interface.


(This is the case here.)

This default function does nothing in the case of the pointer and
> nonnull-pointer types (deallocation is not the responsibility of the
> C-interface) and returns the fixnum ‘___FIX(___NO_ERR)’ to indicate no
> error.


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?

Mikael


>
>
>
>
>
>
>
> _______________________________________________
> 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/20130819/3a05a9b6/attachment.htm>


More information about the Gambit-list mailing list