Sorry for nudging you again, but I think that this needs to be fixed, because this tutorial is intended for people with little knowledge of XS and C, and memory management is one of the aspects in which Perl differs greatly from C. It's quite easy to imagine someone being too used to reference counting of Perl to think that in C, allocated memory should be manually returned to OS.

Maybe it's just me, bitten by segfaults, memory corruption and leaks almost every time I write in plain C. And tutorial code is inevitably copied without much incentive to change it, since it produces the right output...

And the fix is simple: a free(c_array); inserted between the for (i=0; i<3; i++) {/*...*/} loop (which uses the pointer) and inline_stack_done; (which cleans up at the end of void _arr). A real world library in place of xswrap example would probably document that the pointer returned by unsigned char * arr(void) fully belongs to the user and needs to be freed after use.


In reply to Re^7: Wrapping a C shared library with Perl and XS by Anonymous Monk
in thread Wrapping a C shared library with Perl and XS by stevieb

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.