Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re^3: Mini-Tutorial: Perl's Memory Management (which malloc)

by tye (Sage)
on Oct 29, 2009 at 17:31 UTC ( #803998=note: print w/replies, xml ) Need Help??

in reply to Re^2: Mini-Tutorial: Perl's Memory Management
in thread Mini-Tutorial: Perl's Memory Management

As a link:

If you have Perl use the system's default malloc() calls, then you can get sloppy and use Perl's configured free() on stuff that some library malloc()d or pass Perl-malloc()d buffers to an external library that expects to be able to free() or realloc() the buffer.

So some xchat hacker got sloppy and didn't keep straight what needed to be Perl-allocated and what needed to be OS-allocated.

- tye        

  • Comment on Re^3: Mini-Tutorial: Perl's Memory Management (which malloc)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://803998]
[Corion]: ambrus: Yeah, I read that, but it's somewhat vague as in what I really have to implement, and where/how my "other" mainloop should/needs to call AnyEvent
[Corion]: (or maybe I just work better from existing code that I munge until it works and I understand it rather than a short abstract text like "implement everything that's needed" ;) )
[ambrus]: Corion: I think in this case you can get away with only a stub for idle, one that always dies when you create it, because AnyEvent::HTTP doesn't use it, not even indirectly through AnyEvent::Handle or AnyEvent::Socket or AnyEvent::DNS.
[Corion]: The "and I understand it" part is optional.
[Corion]: ambrus: Yes but I also need to implement the file / IO watcher, because Prima has that (in Prima::File), and I need to supply the appropriate thing to make push_write etc. work with Prima
[ambrus]: Corion: yes, you need to implement the io watcher, which should be simple because Prima::File is basically that, and the timer watcher form Prima::Timer
[Corion]: ... or so I think. As I said, I'm somewhat vague on how to make AnyEvent cooperate with a callback-driven IO event loop that gives me callbacks when data is available or can be written
[ambrus]: what push_write thing? I don't think you need that. that's implemented generically by AnyEvent::Handle
[Corion]: ambrus: Yeah, that's what I think as well. But you give me an idea, maybe I should start with implementing the timer, as that should be far simpler and with fewer edge-cases/nasty interaction than the file watcher
[ambrus]: You only provide the watcher part that tells when the handle is readable or writable, not the actual writing and reading.

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (9)
As of 2016-12-08 12:15 GMT
Find Nodes?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:

    Results (141 votes). Check out past polls.