首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果GetStringUTFChars返回一个副本,您是否应该调用ReleaseStringUTFChars?

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

Stack Overflow用户
提问于 2011-05-03 00:28:49
回答 1查看 42.4K关注 0票数 77

Rob戈登的"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)一书中写道:

无论GetStringChars将*isCopy设置为JNI_TRUE还是JNI_FALSE,都必须调用ReleaseString-Chars。根据GetStringChars是否返回副本,ReleaseStringChars可以释放副本,也可以取消固定实例。

我假设这是戈登书中的一个bug是正确的吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5859673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档