如果我想 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
。
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
。