¿Debo liberar la cadena asignada después de pasarla al NewStringUTF()
?NewStringUTF() y liberar memoria
que tienen algo de código similar a:
char* test;
jstring j_test;
test = some_function(); // <- malloc()s the memory
j_test = (*env)->NewStringUTF(env, test);
free(test); // <- should this be here?
Cuando liberar la cadena después de pasarlo a NewStringUTF()
, me sale un error de signal 11 (SIGSEGV), fault addr deadbaad
. Si elimino la llamada free()
, el error desaparece. ¿Qué estoy haciendo mal?
Veo opiniones contradictorias. Algunos dicen que debería liberarlo, algunos dicen que el VM lo libera, otros dicen que el VM no lo libera y que debes hacer magia vudú para liberarlo. Estoy confundido.
posible duplicado de [JNI liberando memoria para evitar pérdida de memoria] (http://stackoverflow.com/questions/1533378/jni-freeing-memory-to-avoid-memory-leak) – NPE