Java 如何释放字符**
如何在jni中释放字符**? 我在下面找不到任何可以释放pstr的环境函数Java 如何释放字符**,java,c++,java-native-interface,Java,C++,Java Native Interface,如何在jni中释放字符**? 我在下面找不到任何可以释放pstr的环境函数 Java_com_example_test( JNIEnv* env,jobject,jobjectArray content){ jsize len = env->GetArrayLength(content); char **pstr = (char**)malloc(len* sizeof(char*)); jstring jstr; for (int i=0; i<len;i++){
Java_com_example_test(
JNIEnv* env,jobject,jobjectArray content){
jsize len = env->GetArrayLength(content);
char **pstr = (char**)malloc(len* sizeof(char*));
jstring jstr;
for (int i=0; i<len;i++){
jstr = (jstring)env->GetObjectArrayElement(content,i);
pstr[i]=(char*) env->GetStringUTFChars(jstr,0);
}
env->DeleteLocalRef(jstr);
// todo release pstr
Java\u com\u示例\u测试(
JNIEnv*env、jobject、jobjectArray内容){
jsize len=env->GetArrayLength(内容);
char**pstr=(char**)malloc(len*sizeof(char*);
jstring-jstr;
for(int i=0;iGetObjectArrayElement(content,i);
pstr[i]=(char*)env->GetStringUTFChars(jstr,0);
}
env->DeleteLocalRef(jstr);
//todo释放pstr
将释放使用malloc分配的内存,但在此之前,您需要释放VM分配的内存以防止内存泄漏。
从
返回一个指针,该指针指向一个字节数组,该数组以修改的UTF-8编码表示字符串。
此数组在通过ReleaseStringUTFChars()释放之前有效。free(pstr);
?是否必须释放从GetStringUTFChars
获取的字符串?
free(pstr);
pstr = NULL;
const char * GetStringUTFChars(JNIEnv *env, jstring string,
jboolean *isCopy);