Edw*_*per 71 java java-native-interface
Rob Gordon的"Essential JNI:Java Native Interface"一书包含以下代码示例,用于将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);
}
Run Code Online (Sandbox Code Playgroud)
需要注意的是它只调用ReleaseStringUTFChars
,如果isCopy
是真实的.
但是Java Native Interface:Programmer's Guide and Specification(备用链接:)这本书http://192.9.162.55/docs/books/jni/html/objtypes.html#5161
说:
无论GetStringChars将*isCopy设置为JNI_TRUE还是JNI_FALSE,都必须调用ReleaseString-Chars.ReleaseStringChars可以释放副本或取消实例,具体取决于GetStringChars是否返回了副本.
我认为这是戈登书中的一个错误是正确的吗?
Bre*_*ail 60
是的,您的假设是正确的(您应该始终调用ReleaseStringUTFChars).
归档时间: |
|
查看次数: |
35634 次 |
最近记录: |