问题描述
最近在研究JNI部分,有些不太明白jstringMyNewString(JNIEnv*env,jchar*chars,jintlen){jclassstringClass;jmethodIDcid;jcharArrayelemArr;jstringresult;stringClass=(*env)->FindClass(env,"java/lang/String");if(stringClass==NULL){returnNULL;/*exceptionthrown*/}/*GetthemethodIDfortheString(char[])constructor*/cid=(*env)->GetMethodID(env,stringClass,"<init>","([C)V");if(cid==NULL){returnNULL;/*exceptionthrown*/}/*Createachar[]thatholdsthestringcharacters*/elemArr=(*env)->NewCharArray(env,len);if(elemArr==NULL){returnNULL;/*exceptionthrown*/}(*env)->SetCharArrayRegion(env,elemArr,0,len,chars);/*Constructajava.lang.Stringobject*/result=(*env)->NewObject(env,stringClass,cid,elemArr);/*Freelocalreferences*/(*env)->DeleteLocalRef(env,elemArr);(*env)->DeleteLocalRef(env,stringClass);returnresult;}如上代码,为什么stringClass需要释放,而jmethodIDcid不需要呢?
解决方案
解决方案二:
该回复于2011-05-23 09:02:14被版主删除