Я использую JNI для расширения моего API в Java, чтобы сделать его доступным через C ++ (я создаю классы-оболочки).Я опытный в Java, но плохо знаком с C ++.
Теперь я создаю оболочку в C ++ для функции Java getString (), которая возвращает String.Я использую GetStringUTFChars, чтобы получить строку C из строки Java, но я не знаю, где использовать ReleaseStringUTFChars, которая освобождает строку C.Вот мой код (aClass и aClassInstance являются частными членами даты внутри класса оболочки):
const char* getString() {
jmethodID methodID = env->GetMethodID(aClass,
"methodName",
"()Ljava/lang/String;");
if (methodID == NULL) {
cout << "--methodID = NULL";
exit(0);
}
jstring jstringResult = (jstring) env->CallObjectMethod(aClassInstance, methodID);
const char* result = env->GetStringUTFChars(jstringResult, NULL);
// env->ReleaseStringUTFChars(jstringResult, result);
return result;
}
Если я удалю // и использую ReleaseStringUTFChars, результат будет освобожден, и я больше не смогу возвращатьэто верно?Должен ли я скопировать результат в другой массив символов перед его выпуском?
Спасибо, любая помощь приветствуется!
K