Android JNI中对String的处理
来源:互联网 发布:教学楼网络设计方案 编辑:程序博客网 时间:2024/05/13 08:57
Java的String使用的16位的Unicode字符(UTF-16),在C/C++中一般会用char*指向string(这意味着strings在其中往往会是ASCII或者UTF-8格式).因此在JNI中,java的String必须在被使用前转换成C/C++可以使用的格式。而在JNI中,被使用后的C/C++ String必须释放掉,否则会引起内存泄漏。
有一个简单的例子
在java代码中
public class testMine {
public staticnative void handleMyString(String str);
}
在jni的C代码中,
void JNICALLJava_com_test_testMine_handleMyString(JNIEnv * env, jclass cla, jstring js)
{
constchar* s = (*env)->GetStringUTFChars(env,js, NULL);
if(s != NULL) {
…………..// 做所要进行的处理.
// 释放string
(*env)->ReleaseStringUTFChars(env,js, s);
}
}
JNI有好一些对string进行 读取/释放 的方法,如下
GetStringChars(), ReleaseStringChars();GetStringUTFChars(),ReleaseStringUTFChars();GetStringCritical(), ReleaseStringCritical().
还有两个方法,在调用的时候并不分配内存,因此不需要释放,建议使用:GetStringRegion和GetStringUTFRegion.
- Android JNI中对String的处理
- 在JNI中对图像的处理
- [Android] JNI 中传递字符串参数(String)的安全处理方式
- Android中String的处理
- Android中采用JNI对Bitmap进行处理,比Canvas处理快85倍左右。
- Android中String处理
- 4.29Android中对jni调用部分的调试
- C++中string类对字符串的各种处理总结
- 对String字符串的处理
- Android中对ListView的优化处理
- android中对小数精度的处理
- Android中对加载大图的处理
- android 中对返回事件的处理
- jni中字符转换中文乱码的处理方法 Java String转换成const char*(转摘)
- jni中字符转换中文乱码的处理方法 Java String转换成const char*(转摘)
- Android研发中对String的思考(源码分析)
- Android中JNI的使用
- Android中jNI的使用
- MinimalComps学习
- /etc/lighttpd/lighttpd.conf
- 国内十大网站使用的Web服务器调查
- sqlserver 2000 未能找到存储过程 master.dbo.xp_dirtree
- 在Ubuntu上配置使用memcached及PHP Memecache 客户端(apt-get方式)
- Android JNI中对String的处理
- Quartus 的文件管理
- The breakpoint will not currently be hit. No symbols have been loaded for this document
- shell脚本循环判断进程是否存在
- Cannot debug x64 Process with VS2010 SP1 under Win7 64
- /etc/lighttpd/modules.conf
- Trim a string with C++
- postgreSql基础命令及linux下postgreSql命令
- 计算地球上两经纬度点 A B 间距离