如何在jni中释放char**? 我在下面找不到任何 env 函数来释放 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
最佳答案
free(pstr);
pstr = NULL;
会释放malloc分配的内存,但在此之前你需要释放VM分配的内存以防止内存泄漏。 来自 Java SE doc
const char * GetStringUTFChars(JNIEnv *env, jstring string,
jboolean *isCopy);
返回一个指向字节数组的指针,该字节数组表示修改后的 UTF-8 编码中的字符串。 该数组在被 ReleaseStringUTFChars() 释放之前一直有效。
关于java - 如何释放字符**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55447790/