大家好,我现在遇到一个问题,现象是这样的: step1: 我在native层用 byteArray = (*env)->NewByteArray分配一个内存,然后把指针(命名为nativePtr)指向java层。里面有一些可以要使用的数据。 step2: 我再把 刚才传到java层的指针nativePtr 从java层再次传到native层, 再次对nativePtr进行操作 就出问题, 请问下这个是什么问题,谢谢。
还有, 我在native用 NewByteArray()分配内存后,java会自动回收吗,还是需要我自己回收,谢谢!
GetByteArrayRegion最后一个参数要是(jbyte *)类型的 char* Utility::getByteArrayValue(JNIEnv* env, jbyteArray byteArray, int* dataLength) { char* data = NULL; if (NULL != byteArray) { jint length = env->GetArrayLength(byteArray); *dataLength = length; if (0 < *dataLength) { data = new char[length]; env->GetByteArrayRegion(byteArray, (jint)0, length, (jbyte *) data); } } return data; }
PS:你的代码是C的,所以有 (*env)->.这个你别管,上面代码是C++的 我看了下区别就是GetByteArrayRegion的最后一个参数类型
|