新建数组

通过使用这New<Type>Array函数来构造一个新数组实例。数组的长度必须提供作为一个参数,当调用这些函数时。

存溢出,虚拟机异常时返回为空,提示Jni代码不应该继续。

获得数组的元素

代码获得一个数组的拷贝作为c数组,或者它询问JNI来得到一个数组元素的直接指针。

一个拷贝的操作

这个Get<Type>ArrayRegion函数拷贝原始的Java数组到给定的C数组。

jint nativeArray[10];
(*env)->GetIntArrayRegion(env, javaArray, 0, 10, nativeArray);

之后本地代码,可以可以使用和修改数组想c的普通数组一样。当本地想要提交改变到java数组时,可以使用set<Type>ArrayRegion来拷贝C数组到Java数组。

当数组长度大时,拷贝就会出错。

直接指针的应用

这个Get<Type>ArrayElements函数,得到数组元素的直接指针。第三个参数isCopy,指定the caller to determine whether the returned C array points to a copy or the pinned array in the heap.

jint* nativeDirectArray;
jboolean isCopy;
nativeDirectArray = (*env)->GetIntArrayElements(env, javaArray, &isCopy);

当完成时需要释放这些指针,故Release<Type>ArrayElements.

(*env)->ReleaseIntArrayElements(env, javaArray, nativeDirectArray, 0);

其中第四个参数,
        0              Copy back the content and free the native array.
       JNI_COMMIT          Copy back the content but do not free the native array. This can be used for periodically updating a Java array.
      JNI_ABORT             Free the native array without copying its content.

对于Array的引用相关推荐

  1. Array.slice 8 种不同用法

    译者:前端小智 原文:codeburst.io/js-by-examp- 为了保证的可读性,本文采用意译而非直译. 想优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! JS数组slice方法 ...

  2. 符号引用(typeglob,别名)与全局变量的修改

    符号引用(typeglob,别名)与全局变量的修改 不能以为在子函数里修改了一个和全局变量同名的变量就会修改全局变量: #!/usr/bin/perl $glov = "hello" ...

  3. JavaScript 判断变量是否为数组Array的方法

    1. 不能用typeof ,因为typeof 只能判断基本类型,不能判断引用类型 var ary = [1,23,4]; console.log(typeof ary); //输出结果是Object ...

  4. 关于数组的引用和引用的数组

    一.大概区别 就像指针的数组和数组的指针一样耐人寻味 //array首先向右结合,所以这个相当于 (int&)array[] array是个数组,其中的元素是引用 //应该叫:引用的数组 in ...

  5. JavaScript中 Array.slice 8种不同的用法

    slice 工作原理 slice是数组上的一个方法,它最多有两个参数: arr.slice([begin[,end]]) begin 从该索引处开始提取原数组中的元素,如果该参数为负数,则表示从原数组 ...

  6. JavaScript系列学习笔记2 —— 数组Array对象

    目录 一.概念与作用 二.基本结构 2.1 数组构造函数 2.2 数组字面量表示法 三.Array对象的属性和方法 3.1 Array对象的属性 3.2 Array对象的方法 四.数组元素的访问和存储 ...

  7. Python之二维数组(list与numpy.array)

    1.python中的二维数组,主要有list和numpy.array两种  >>import numpy as np>>a=[[1,2,3],[4,5,6],[7,8,9]] ...

  8. php之变量覆盖漏洞讲解,PHP中的变量覆盖漏洞代码深入解析

    2.CTF中extract()导致的变量覆盖 我们大致分析是要求我们GET传参进去值会经过extract()函数下来会有两个if 第一个if判断 ceshi这个变量是否存在 存在则继续执行if里面的 ...

  9. (转)线程安全的CopyOnWriteArrayList介绍

    转载自:线程安全的CopyOnWriteArrayList介绍 证明CopyOnWriteArrayList是线程安全的 先写一段代码证明CopyOnWriteArrayList确实是线程安全的. 读 ...

最新文章

  1. 网络营销——浅析网站改版之后对网站展开新的网络营销有哪些影响?
  2. 位于/var/log目录下的20个Linux日志文件
  3. 【项目实战课】基于Pytorch的Pix2Pix黑白图片上色实战
  4. 官司在即,品胜董事长对话苹果副总裁,打脸了谁?
  5. 如何在JSP里使用Java bean
  6. java jml_JML 入门
  7. 区块链在智慧农业中的应用展望
  8. Maven私服(二) - Nexus的安装
  9. JavaScript:字符串相关操作
  10. RNA_seq(1)植物转录组实战(下)之DESeq2进行差异基因分析
  11. selnium 判断页面加载完成_Selenium_等待页面加载完毕
  12. C# installshield2020项目部署打包详细教程
  13. OneNote中快速笔记怎么打开和删除
  14. 网络131黄宇倩--第二周作业
  15. H5页面微信授权登录——前端部分
  16. Elasticsearch X-pack证书过期解决方法
  17. 齐岳|水溶性竹红菌素PLGA纳米粒|负载奥沙利铂的mPEG-PLGA纳米粒子|包载黄豆苷元的PLGA纳米颗粒
  18. 关于SaaS平台中应对多租户系统模式的权限设计
  19. IOS13如何屏蔽更新,快看这里!!!
  20. 2021年5月23日

热门文章

  1. wdns服务器未响应,Win7系统​网络诊断提示DNS服务器未响应的解决方法
  2. c语言二维数组表示坐标,c语言多维数组地址的表示方法
  3. [Python人工智能] 十.Tensorflow+Opencv实现CNN自定义图像分类案例及与机器学习KNN图像分类算法对比
  4. [C/C++基础知识] 面试再谈struct和union大小问题
  5. 378. Kth Smallest Element in a Sorted Matrix 有序矩阵中第K小的元素
  6. BEGIN-1 A+B问题
  7. C / C++ 软件项目的目录结构
  8. 2014年第五届蓝桥杯 - 省赛 - C/C++大学A组 - G. 蚂蚁感冒
  9. Orangepi Zero播放声音报错的解决方案
  10. 【机器视觉】 dev_display算子