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<代码>。