5

我对 Perl XS 完全陌生。

我的简单 testfunction 获取一个字符串并附加一些东西。在 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

谢谢!克里斯

4

1 回答 1

4

newSVpv创建字符串的内部副本,因此您可以通过free在分配给后调用来简单地释放内存RETVAL

于 2016-07-13T10:27:56.827 回答