Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^3: Managing C library memory in XS

by dmitri (Priest)
on May 05, 2014 at 12:51 UTC ( [id://1085060]=note: print w/replies, xml ) Need Help??


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

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.

Replies are listed 'Best First'.
Re^4: Managing C library memory in XS
by petermogensen (Sexton) on May 05, 2014 at 12:58 UTC
    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.
        I think you could say that about any programming problem.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (7)
As of 2024-04-23 18:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found