泰安润泽建设工程有限公司网站做购物网站怎么赚钱
泰安润泽建设工程有限公司网站,做购物网站怎么赚钱,免费二维码在线制作,网站制作要多长时间一直都是编译armabi的。没有不论什么问题#xff0c;这个架构是软件模拟浮点运算的。后来看到NDK文档上说armabi-v7a是针对有硬件处理浮点计算的arm cpu的。 于是就改动配置编译armebai-v7a的so文件。 结果是编译没问题。一执行就是crash掉#xff0c;Fatal signal 7 (SIGSEG… 一直都是编译armabi的。没有不论什么问题这个架构是软件模拟浮点运算的。 后来看到NDK文档上说armabi-v7a是针对有硬件处理浮点计算的arm cpu的。 于是就改动配置编译armebai-v7a的so文件。 结果是编译没问题。一执行就是crash掉Fatal signal 7 (SIGSEGV)错误。 进过排查才发现crash掉的不过对一个浮点变量赋值而已。 仅仅只是这个浮点内存是一个连续内存中的一部分。 经过排查才发现。这个so文件使用了浮点指令须要指针4字节对齐。举个样例 char* ptr malloc(10);
float* f (float*) (ptr 2);
f[0] 1.0f;这里f[0]就会crash掉使用f指针的訪问操作就报错。由于f指针没有4字节对齐。 malloc能够保证返回的指针是对齐的。对指针的偏移操作导致指针没有4字节对齐。是很隐蔽的。 究其原因是由于arm cpu的指令。要求内存訪问是4字节的整数倍否则就会发生硬件报错。 当我断言代码中一定是这种错误原因的时候。我做了一个測试在程序启动的时候用了以上代码。 然而。然而。并没有crash掉。 我了个fuck啊~ 进过我锲而不舍的各种測试和推測我找到了必然crash的代码。例如以下 char* ptr malloc(10);
float* f (float*) (ptr 2);
for (int i 0; i 1; i) {f[0] 1.0f;
} 是的。非常奇怪。仅仅有在循环的时候非4字节对齐才会crash我測试了for和while都是这样。 故事的结局是我确实有for循环非4字节对齐的赋值代码改动掉之后执行就没有问题了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89738.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!