您现在的位置: 爱51代码网 >> 范文 >> 文章正文
native用 NewByteArray()分配内存后java会自动回收吗

大家好,我现在遇到一个问题,现象是这样的:
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的最后一个参数类型

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    Hadoop2.2.0在eclipse控制台没有
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    Hadoop2.2.0在eclipse控制台没有
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    android-async-http框架的例
    wp8.0 button按下后变换背景
    如何在android手机上画折线图
    org.eclipse.swt.custom.Sty
    android如何做到后台服务不会
    android如何在一个activity中
    android中给Dialog设置动画自
    订单签名错误,请检查PARTNER
    C#给android通过Socket发送图
    如何获取drawable文件夹下图
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |