Perl XS:内存管理
Perl XS: Memory management
我对 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
谢谢!
克里斯
newSVpv
创建字符串的内部副本,因此您可以在分配给 RETVAL
.
后通过调用 free
简单地释放内存
我对 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
谢谢! 克里斯
newSVpv
创建字符串的内部副本,因此您可以在分配给 RETVAL
.
free
简单地释放内存