我應該在將它傳遞給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()
呼叫,該錯誤消失。我究竟做錯了什麼?
我看到了相互矛盾的觀點。有人說我應該自己釋放它,有人說虛擬機釋放它,有人說虛擬機不釋放它,你應該做出奇怪的巫術魔法來釋放它。我很困惑。
[JNI釋放內存以避免內存泄漏]的可能重複(http://stackoverflow.com/questions/1533378/jni-freeing-memory-to-avoid-memory-leak) – NPE 2011-06-04 19:38:56