gpt4 book ai didi

java - 如果 GetStringUTFChars 返回了一个副本,你应该调用 ReleaseStringUTFChars 吗?

转载 作者:IT老高 更新时间:2023-10-28 13:51:27 27 4
gpt4 key购买 nike

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);
}

请注意,如果 isCopy 为真,它只会调用 ReleaseStringUTFChars

但是这本书Java Native Interface: Programmer's Guide and Specification (替代链接:http://192.9.162.55/docs/books/jni/html/objtypes.html#5161)说:

The ReleaseString-Chars call is necessary whether GetStringChars has set *isCopy to JNI_TRUE or JNI_FALSE. ReleaseStringChars either frees the copy or unpins the instance, depending upon whether GetStringChars has returned a copy or not.

我认为这是 Gordon 书中的错误是正确的吗?

最佳答案

是的,您的假设是正确的(您应该始终调用 ReleaseStringUTFChars)。

关于java - 如果 GetStringUTFChars 返回了一个副本,你应该调用 ReleaseStringUTFChars 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5859673/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com