ReleaseStringUTFChars
全部标签 以下是通过JNI从JavaJVM调用的C++代码的摘录:(JNIEnv*pJniEnv,jobject,jstringpDllName){stringdllName(pJniEnv->GetStringUTFChars(pDllName,NULL));//stuffhappensherelikeHINSTANCEloadedDll=LoadLibrary(dllName.c_str());pJniEnv->ReleaseStringUTFChars(pDllName,dllName.c_str());return...;}这在WindowsXP中有效,但在Windows7中崩溃并出现访
我对从java传递给c的对象有点困惑?应该在nativejni方法中删除它们,还是在方法返回时将它们作为垃圾回收。例如:如果我的java文件中有一个本地声明publicnativeprintString(Stringmsg);并且本地方法正在使用constchar*message=(jni_env)->GetStringUTFChars(msg,&iscopy);获取字符串的c风格字符数组。我是否应该在native方法中完成所有操作后调用(jni_env)->ReleaseStringUTFChars(msg,message);。如果是,那为什么有必要?为什么java运行时环境不代表程
RobGordon的“EssentialJNI:JavaNativeInterface”一书包含以下代码示例,用于将jstring转换为C字符串:constchar*utf_string;jbooleanisCopy;utf_string=env->GetStringUTFChars(str,&isCopy);/*...usestring...*/if(isCopy==JNI_TRUE){env->ReleaseStringUTFChars(str,utf_string);}请注意,如果isCopy为真,它只会调用ReleaseStringUTFChars。但是这本书JavaNativ