关于native层用NewByteArray分配内存的问题
大家好,我现在遇到一个问题,现象是这样的:
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;
}