首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

关于native层用NewByteArray分配内存的有关问题

2013-09-15 
关于native层用NewByteArray分配内存的问题大家好,我现在遇到一个问题,现象是这样的:step1:我在native层用

关于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;
}


PS:你的代码是C的,所以有 (*env)->.这个你别管,上面代码是C++的
我看了下区别就是GetByteArrayRegion的最后一个参数类型

热点排行