Perl XS: управление памятью
Я абсолютно новичок в Perl XS.
Моя простая тестовая функция получает строку и добавляет что-то. В Perl есть скалярная строка в и одна из.
В функции у меня есть malloc. Какой правильный способ освободить мем?
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
Спасибо! Крис
1 ответ
Решение
newSVpv
создает внутреннюю копию строки, так что вы можете просто освободить память, вызвав free
после присвоения RETVAL
,