我正在使用SWIG,我的函数返回一个char *malloc'ed.SWIG回归PyString_FromStringAndSize(my-char-str, len).
有没有办法在my-char-str不编辑C包装器代码的情况下释放它?
%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)
| 归档时间: |
|
| 查看次数: |
905 次 |
| 最近记录: |