c: char* , malloc, возврат из функции, и снова возврат в Java(jni)
Хочу попытаться понять ситуацию: Посмотрите код и комментарии:
#include <string.h>
#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
char* getstring(){
size_t unknown_string_length = 1000; //допустим 1000, но количество на самом деле неизвестно
char* returned = malloc(unknown_string_length);
sprintf(returned, "%s", "очень много букв");
return returned;
}
jstring Java_com_mycompany_myndkapp_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz )
{
char *result = getstring();
//Когда под переменную выделена память с помощью malloc, то переменную надо освобождать, ОК
free(result);
//но что тогда возвратится в джаву, как поступить в данном случае ?
//какие есть способы вообще ?
return (*env)->NewStringUTF(env, result);
}
Вот как поступить в даном случае , чтобы было правильно ?
Источник: Stack Overflow на русском