混合编程jni 第六篇之native 中字符串和数组的操作
Posted 香菜聊游戏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了混合编程jni 第六篇之native 中字符串和数组的操作相关的知识,希望对你有一定的参考价值。
继续JNI的知识点,今天看下字符串和数组的一些操作
这两个是比较特殊的存在
字符串操作
编码格式
Java默认使用Unicode编码,C/C++默认使用UTF编码
在本地代码中操作字符串的时候,JNI支持字符串在Unicode和UTF-8两种编码之间转换。
GetStringUTFChars能够把一个jstring指针(指向JVM内部的Unicode字符序列)转换成一个UTF-8格式的C字符串。
访问字符串
一般来说,在从JVM内部获取一个字符串之后。
JVM内部会分配一块新的内存,拷贝原来的字符串,以便本地代码访问和改动。
即然有内存分配。在使用完之后就应该释放。
ReleaseStringUTFChars()和GetStringUTFChars()必须成对出现,用来释放内存和引用,使对象可以被GC回收。
创建字符串
调用NewStringUTF函数会构建一个新的java.lang.String字符串对象。
JVM不能分配足够的内存,NewStringUTF会抛出一个OutOfMemoryError异常,并返回NULL
下面是一套连招
jstring NewStringUTF(JNIEnv *env
以上是关于混合编程jni 第六篇之native 中字符串和数组的操作的主要内容,如果未能解决你的问题,请参考以下文章