文字列 (char *) を返す C 関数があります。それを と呼びましょうfoo()
。Pythonでは、それを呼び出して戻り値を使用したいのですが、完了したら、foo
返された文字列を解放する別のC関数を呼び出したいと思います。
ポインターと文字列自体の両方を取得するにはどうすればよいですか? 私がこれを好きなら:
fooFunc = foolib.foo
fooFunc.restype = c_char_p
r = fooFunc()
次に、文字列を取得しますが、ポインターは取得しません。を指定せずに実行するrestype
と、正しいアドレスと思われる int が得られますが、それをキャストしてキャストしようとするとc_char_p(<address>)
、セグメンテーション違反でクラッシュします。