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。我的需要是返回這個nativeString來調用另一個本地調用函數。如果我想返回從GetStringUTFChars獲得的C sting,我應該使用ReleaseStringUTFChars嗎?
我必須使用ReleaseStringUTFChars()。如果我使用它,那麼它不會釋放內存,調用函數的nativeString值將無效。
我在其他堆棧溢出問題中沒有清楚地看到這個答案。請幫忙。
是的,你必須釋放緩衝區。處理這個問題的最簡單方法是返回一個std :: string而不是char * –