私は SWIG を使用しており、私の関数char *
は malloc された を返します。SWIG を返しますPyString_FromStringAndSize(my-char-str, len)
。
my-char-str
Cラッパーコードを編集せずにこれを解放する方法はありますか?
%newobject
ファイルでディレクティブを使用し.i
ます。SWIG 2.0ドキュメントから:
このようにメモリを割り当てる関数があれば、
char *foo() {
char *result = (char *) malloc(...);
...
return result;
}
その場合、SWIG によって生成されたラッパーでメモリ リークが発生します。返されたデータは文字列オブジェクトにコピーされ、古い内容は無視されます。
メモリ リークを修正するには、%newobject ディレクティブを使用します。
%newobject foo;
...
char *foo();