I am absolutely new to Perl XS.
My simple testfunction gets a string and appends something. In Perl is is a scalar-string in and one out.
In the function I have a malloc. Whats the correct way to free the mem?
SV *foo (str)
SV *str
CODE:
unsigned char *strbuf;
size_t strlen;
strbuf = (unsigned char *) SvPV (str, strlen);
int n = strlen + 10;
unsigned char *buf = malloc (n);
strncpy (buf, strbuf, strlen);
strncat (buf, "0123456789", 10);
RETVAL = newSVpv (buf, n);
OUTPUT:
RETVAL
thanks! Chris
newSVpv
creates an internal copy of the string, so you can simply free the memory by calling free
after assigning to RETVAL
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With