jni开发strcat导致的异常
来源:互联网 发布:饿了么和淘宝外卖 编辑:程序博客网 时间:2024/05/29 07:03
由于添加x64 cpu支持,之前的jni项目从 ndk8升级到了ndk10,升级编译发现以前的代码编译不通过,因为jni对c++支持不是很好,于是改用c写法,
之前有一段字符拼接改为了使用strcat方法进行拼接,
编译通过,功能正常,我以为这就好了,但是后来我的项目经常莫名奇妙的崩溃,
而且没有确定的错误提示,我起初认为是代码优化问题,我对app进行了内存优化操作,但是问题依旧,
报错显示Channel is unrecoverably broken and will be disposed!
网上也找不到问题的确定原因,但是从保存的Log中打印了大量汇编信息确定,是jni错误
jni的排查是非常困难的,幸运的是,我找到了
我采用strcat方法拼接了两个字符串,这导致了内存操作错误,
因为我是直接使用方法拼接,方法参数如下
char *strcat(char *dest,char *src);
dest为起始字符串,src为拼接在后面的字符串
这样做确实成功将两个字符串拼接起来了,但是这导致内存操作错误,因为strcat只是将src加到了dest的后面,但是dest没有多余的容量来容纳这些数据
虽然我们编译过去,也得到了正确的结果,单每次我们的数据都会超出所属内存,最终导致异常崩溃!
正确的拼接方法如下
char* c = (char*)malloc(strlen(a) + strlen(b) + 1);strcpy(c, a);strcat(c, b);
c就是拼接好的字符串
0 0
- jni开发strcat导致的异常
- strcat加入异常处理的实现
- c/c++ error:在GetAdaptersInfo循环中使用strcat时,忘记清空strcat导致 内存溢出 异常
- JNI开发之捕获异常
- JNI异常的处理
- JNI异常的处理
- JNI异常的处理
- jni的异常处理
- JNI与多个线程导致JNIEnv*发生异常
- JNI/NDK开发指南(九)---JNI异常处理
- echarts 数据异常导致的图表异常
- JNI的开发Demo
- JNI的开发
- JNI的开发流程
- 针对 IDEA 开发工具崩溃 导致的项目工程异常的解决方案
- Symbian C++开发,误用NewLC导致的KERN-EXEC 3异常
- Android JNI调用OpenCV,长时间运行内存异常,导致闪退的log分析和解决---(ReferenceTable overflow (max=1024)造成的)
- 安装msdn2008后,导致vs2010 扩展导致异常的解决
- gradle打Zip包
- 关于emgu 在VS2010 C#中的配置问题
- linux命令备份和还原mysql数据库
- ubuntu12.04 create SAP issues
- list_for_each()与list_for_each_safe()的区别
- jni开发strcat导致的异常
- testlink+mantis环境部署
- angularjs指令详解
- mstsc保存用户名和密码,实现自动登录远程桌面
- Android基础入门教程——7.4 Android调用WebService
- ios开发中生成.pem文件
- 12个学习编程的网站
- Android Studio中使用过程中遇到的问题(二)--SVN的安装与使用以及关联本地项目
- Vmware虚拟机下Ubuntu上网设置方法