質問: お世話になります。 JavaからJNAを使用し、C言語で作成されたライブラリを読み込むというプログラムを使用しています。 そこで、文字列のポインタを渡してライブラリ読み込み後に読み込み結果文字列を使用したいのですが、Java側で以下のアドレスのようなJnaライブラリがもつクラスを継承したクラスを宣言し、それの型の変数を宣言し、Cのライブラリに渡して使っています。 https://github.com/jakobwenzel/artnet-avr/blob/master/libftdi/src/main/java/ftdi/StringByReference.java 上記StringByReference型の変数をnewで宣言し、Cのライブラリを読み込んだ後、Java側の処理に戻ってきて、何かしらの処理を終え、変数が使われなくなった場合、Java側でポインタの解放は必要になってくるでしょうか? それともGCが自動的に解放してくれているのでしょうか。 どなたかよろしくお願いいたします。
回答: JNA知らなかったので、ちょこっと調べてみました。 JNA API Documentation Class ByReference ByReference.java Class Memory どうやら、Memoryクラスのfinalize()で開放してるっぽい感じですね。