Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何释放字符**_Java_C++_Java Native Interface - Fatal编程技术网

Java 如何释放字符**

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++){

如何在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++){
     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);