如果我想 return 从 GetStringUTFChars 获得的 C 字符串,我应该使用 ReleaseStringUTFChars 吗?

Should I use ReleaseStringUTFChars if I want to return the C sting obtained from GetStringUTFChars?

jstring result = NULL;
**const char *nativeString = NULL;**

if (messageMe != NULL) {
    jstring jstrBuf = (envLocal)->NewStringUTF(value);
    result = (jstring) envLocal->CallStaticObjectMethod(g_clazz, messageMe,
            jstrBuf);
    **nativeString = envLocal->GetStringUTFChars(result, 0);**
    g_JavaVM->DetachCurrentThread();
    return nativeString;

您好,如上面的示例代码所示,我正在使用 GetStringUTFChars 填充 nativeString。我的需要是 return 这个 nativeString 调用另一个本地调用函数。

我必须使用 ReleaseStringUTFChars()。如果我使用它,那么它不会释放内存并且调用函数的 nativeString 值将无效。???

我在其他堆栈溢出问题中没有清楚地得到这个答案。请帮忙

GetStringUTFChars 将为它 returns 的字符串分配内存,而 ReleaseStringUTFChars 会释放该内存。因此,当您使用完 GetStringUTFChars 返回的数据后,您应该调用 ReleaseStringUTFChars