Должен ли я освобождать выделенную строку после передачи ее в 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 ()
, я получаю сигнал 11 (SIGSEGV), ошибка addr deadbaad
error. Если я удалю вызов free ()
, ошибка исчезнет. Что я делаю не так?
Я вижу противоречивые мнения. Некоторые говорят, что я должен освободить его сам, некоторые говорят, что виртуальная машина освобождает его, некоторые говорят, что виртуальная машина не освобождает его, и вы должны использовать странную магию вуду, чтобы освободить его. Я запуталась.