gpt4 book ai didi

python - 将字符串返回到 SWIG python 接口(interface)的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:10 25 4
gpt4 key购买 nike

将字符串从 C++ 返回到 SWIG python 接口(interface)的线程安全且无内存泄漏的方法是什么?

SWIG 会自动将 char * 返回值的内容复制到 python 字符串中。 This SWIG guide举个例子:

char *__str__() {
static char temp[256];
/* WRITE STUFF TO STRING */
return &temp[0];
}

他们的示例使用静态字符串作为返回值,但如果我的 C++ 程序有多个线程,它们可以很容易地覆盖彼此的字符串。

返回新分配的字符串会造成内存泄漏,因为 SWIG 不知道要释放它。

我唯一能想到的是注册并返回一个指向实际 python 字符串对象的指针(这样 python 垃圾收集器就会处理它),但我不确定该怎么做并且想知道如果有更简单的方法。

最佳答案

SWIG 创建包装器代码以在 C++ std::string 和 Python 字符串之间进行转换,如果您包含在 std_string.i 中定义的类型映射.

关于python - 将字符串返回到 SWIG python 接口(interface)的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24613523/

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