C++;到java数组的转换

C++;到java数组的转换,java,c++,arrays,java-native-interface,Java,C++,Arrays,Java Native Interface,我在网上找一些文档,但不容易找到 jshortArray convertShortArrayToJNI(JNIEnv* env, short* arr, size_t count) { jshortArray retval = env->NewShortArray(count); env->SetShortArrayRegion(retval,0,count,arr); return retval; } 您不需要释放retval。它是一个“本地引用”,这意味着只要您从最

我在网上找一些文档,但不容易找到

jshortArray convertShortArrayToJNI(JNIEnv* env, short* arr, size_t count) {
  jshortArray retval = env->NewShortArray(count);
  env->SetShortArrayRegion(retval,0,count,arr);
  return retval;
}

您不需要释放
retval
。它是一个“本地引用”,这意味着只要您从最近的调用通过JNI返回,JVM就会释放它。当然,除非您是从本机线程调用它……

您正试图通过JNI实现这一点,对吗?[Link][1]这与您想要的相反,但可能会有所帮助。[1] :@Vulcan是的!我正在写一个jni cpp代码@ÖvünçMetin我知道相反的情况。但这不是答案
arr
完全特定于您的实现,其内存管理由您决定。我不知道,JVM也不知道,它是指向RAII构造的指针(因此将自动释放),还是您手动创建的,并且需要记住释放它。我使用了您的代码,显示了以下错误:
可引用溢出(max=512)
。我用
jenv->ReleaseShortArrayElements(retval,arr,0)释放创建的数组(它没有返回,只在回调函数中使用)。有什么不对劲吗?