将字符串返回到swigpython接口的最佳方法是什么?

2024-05-19 02:09:36 发布

您现在位置:Python中文网/ 问答频道 /正文

什么是线程安全和无内存泄漏的方法,将字符串从C++返回到Sigg Python接口?在

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

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

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

返回新分配的字符串会导致内存泄漏,因为SWIG不知道如何释放它。在

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


Tags: 方法内存字符串内容staticthis线程temp
1条回答
网友
1楼 · 发布于 2024-05-19 02:09:36

SWG创建包装代码,以在C++ ^ ^ {CD1>}和Python字符串之间转换,如果您包括在{{CD2>}中定义的类型映射。在

相关问题 更多 >

    热门问题