如何释放与SWIG一起返回的malloc'ed char*

use*_*076 3 c python swig

我正在使用SWIG,我的函数返回一个char *malloc'ed.SWIG回归PyString_FromStringAndSize(my-char-str, len).

有没有办法在my-char-str不编辑C包装器代码的情况下释放它?

Mar*_*nen 7

%newobject.i文件中使用该指令.从SWIG 2.0 文档:

如果你有一个像这样分配内存的函数,

char *foo() {
   char *result = (char *) malloc(...);
   ...
   return result;
}
Run Code Online (Sandbox Code Playgroud)

然后SWIG生成的包装器将发生内存泄漏 - 返回的数据将被复制到字符串对象中,并忽略旧内容.

要修复内存泄漏,请使用%newobject指令.

%newobject foo;
...
char *foo();
Run Code Online (Sandbox Code Playgroud)