書「基本JNI:Java本地接口」,由羅布·戈登包含下面的代碼示例到的jstring轉換爲C字符串:如果GetStringUTFChars返回副本,您應該調用ReleaseStringUTFChars嗎?
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
是真實的。
但是,這本書Java Native Interface: Programmer's Guide and Specification(備用鏈接:http://192.9.162.55/docs/books/jni/html/objtypes.html#5161
)說:
的ReleaseString-個字符呼叫 必要GetStringChars是否有 設定完成後將* isCopy到JNI_TRUE或JNI_FALSE。 ReleaseStringChars或者釋放 拷貝或者取消實例,取決於 關於GetStringChars是否有 返回副本。
我正確地認爲這是Gordon書中的錯誤嗎?
'str'定義在哪裏? – SomethingSomething 2017-08-14 14:37:48