Rob Gordon撰写的《 Essential JNI:Java本机接口》一书包含以下代码示例,可将jstring转换为C字符串:
const char* utf_string;
jboolean isCopy;
utf_string = env->GetStringUTFChars(str, &isCopy);
/* ... use string ... */
if (isCopy == JNI_TRUE) {
env->ReleaseStringUTFChars(str, utf_string);
}
请注意,它仅ReleaseStringUTFChars
在isCopy
为true时调用。
但是《Java本机接口:程序员指南和规范》一书(替代链接http://192.9.162.55/docs/books/jni/html/objtypes.html#5161
:)说:
无论GetStringChars已将* isCopy设置为JNI_TRUE还是JNI_FALSE,都必须使用ReleaseString-Chars调用。ReleaseStringChars释放副本或取消固定实例,具体取决于GetStringChars是否返回了副本。
我以为这是戈登书中的错误是正确的吗?
str
定义?