如果GetStringUTFChars返回一个副本,是否应该调用ReleaseStringUTFChars?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (18)

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

请注意,只有ReleaseStringUTFCharsisCopy真的情况下才会调用。

所以我认为这是Gordon书中的错误是正确的。

提问于
用户回答回答于

是的,你的假设是正确的(你应该总是调用ReleaseStringUTFChars)。

扫码关注云+社区