Devo liberare la stringa assegnata dopo averla passata a NewStringUTF()
?NewStringUTF() e liberare memoria
ho qualche codice simile 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?
Quando ho liberare la stringa dopo aver superato a NewStringUTF()
, ricevo un errore signal 11 (SIGSEGV), fault addr deadbaad
. Se rimuovo la chiamata free()
, l'errore si annulla. Che cosa sto facendo di sbagliato?
Vedo opinioni contrastanti. Alcuni dicono che dovrei liberarlo da solo, alcuni dicono che la VM lo libera, alcuni dicono che la VM non la libera e dovresti fare una strana magia voodoo per liberarla. Non ho capito bene.
possibile duplicato di [JNI Freeing Memory per evitare perdite di memoria] (http://stackoverflow.com/questions/1533378/jni-freeing-memory-to-avoid-memory-leak) – NPE