如何在jni中释放char **? 我没有找到任何能在下面释放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
答案 0 :(得分:1)
free(pstr);
pstr = NULL;
将释放通过malloc分配的内存,但在此之前,您需要释放VM分配的内存以防止内存泄漏。 来自Java SE doc
const char * GetStringUTFChars(JNIEnv *env, jstring string,
jboolean *isCopy);
以修改后的UTF-8编码返回一个指针,该指针指向表示字符串的字节数组。 该数组在ReleaseStringUTFChars()释放之前一直有效。