NewStringUTF()
に渡した後に割り当てられた文字列を解放する必要がありますか?NewStringUTF()と空きメモリ
私は次のようにいくつかのコードがあります。
char* test;
jstring j_test;
test = some_function(); // <- malloc()s the memory
j_test = (*env)->NewStringUTF(env, test);
free(test); // <- should this be here?
私はNewStringUTF()
にそれを通過した後の文字列を解放するとき、私はsignal 11 (SIGSEGV), fault addr deadbaad
エラーを取得します。 free()
呼び出しを削除すると、エラーは消えます。私は間違って何をしていますか?
矛盾する意見があります。何人かは自分で解放するべきだと言っている人もいれば、VMが解放すると言う人もいますし、VMが解放しないと言うと、それを解放するために奇妙なブードゥーの魔法を行うべきです。よくわかりません。
[JNIメモリリークを回避するメモリを解放する]の可能な複製(http://stackoverflow.com/questions/1533378/jni-freeing-memory-to-avoid-memory-leak) – NPE