gpt4 book ai didi

c - Perl XS : Memory management

转载 作者:太空狗 更新时间:2023-10-29 15:03:37 25 4
gpt4 key购买 nike

我对 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创建字符串的内部副本,因此您可以通过调用 free 简单地释放内存分配给 RETVAL 后.

关于c - Perl XS : Memory management,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38337959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com