Java 如何从C++;?

Java 如何从C++;?,java,c++,java-native-interface,Java,C++,Java Native Interface,我发现了一个简单的例子: JNIEXPORT jbyteArray JNICALL Java_Test_returnArray (JNIEnv *env, jobject This) { jbyte a[] = {1,2,3,4,5,6}; jbyteArray ret = env->NewByteArray(6); env->SetByteArrayRegion (ret, 0, 6, a); return ret

我发现了一个简单的例子:

JNIEXPORT jbyteArray JNICALL Java_Test_returnArray
  (JNIEnv *env, jobject This)
{
        jbyte a[] = {1,2,3,4,5,6};
        jbyteArray ret = env->NewByteArray(6);
        env->SetByteArrayRegion (ret, 0, 6, a);
        return ret;
}
但是,这适用于堆栈上的
jbyte
数组。此外,还需要考虑何时调用
ReleaseByteArrayElements

我不知道什么时候发布它。我不希望C++对数组的生命周期负责。理想情况下,我希望java尽可能长时间地使用数组,然后使用垃圾收集器自行处理

<>我想通过JNI传递<代码>字节[]/COD>并让C++填充它,但是为此,我需要事先知道大小,而我不知道。我也尝试过使用
ByteBuffer
,但分配后无法使其增长

<> P> >我如何返回C++缓冲区(具有任意大小),并允许java负责垃圾回收?< /P>“有什么时候调用ReleSeBayjava元素”,因为您没有调用<代码> GeBytEARRayEngs<代码>。