我应该在将它传递给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