Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^2: Managing C library memory in XS

by petermogensen (Sexton)
on May 05, 2014 at 12:44 UTC ( [id://1085059]=note: print w/replies, xml ) Need Help??


in reply to Re: Managing C library memory in XS
in thread Managing C library memory in XS

I'm not sure I follow you here ... Are you suggesting to make perl code explicitly call the wrapper (instead of relying on DESTROY) and keeping a separate (non perl) refcount for every person pointer in the module?

That's how I read your suggestion, since the Perl refcount is always zero when DESTROY is called, right...

Replies are listed 'Best First'.
Re^3: Managing C library memory in XS
by dmitri (Priest) on May 05, 2014 at 12:51 UTC
    Are you suggesting to make perl code explicitly call the wrapper (instead of relying on DESTROY) and keeping a separate (non perl) refcount for every person pointer in the module?

    Call the wrapper from DESTROY.

    The library you are using knows about the references and counts, so you should be able to figure out in your XS code whether to really free an object (person, in this case). In Perl code (DESTROY), simply call your XS function, which will know what to do.

      The library you are using knows about the references and counts

      Ahh.. No. It does not.

      There's not more to the C library interface than I described. Functions returning pointers and a documentation which tells you if you are allowed to free the returned pointer. No reference counting. It's plain C without any magic.

        As long as there is a way to know this programmatically, you are good: program it into your XS module. If there is not, I think you're screwed no matter at which level you code it.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1085059]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (3)
As of 2024-04-20 17:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found