什么是线程安全和无内存泄漏的方法,将字符串从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垃圾回收器就可以处理它),但是我不知道该怎么做,我想知道是否有更简单的方法。在
SWG创建包装代码,以在C++ ^ ^ {CD1>}和Python字符串之间转换,如果您包括在{{CD2>}中定义的类型映射。在
相关问题 更多 >
编程相关推荐