_currentFPVersion = ntohl(*((uint32_t *) (GETIBPOINTER(buffer) + 4))); //----MARKED-LONG---原来是在强制类型转换读取内存的时候出现了错误,于是修改为:uint32_t uTemp = 0; memcpy(&uTemp,GETIBPOINTER(buffer) + 4,sizeof(uint32_t)); _currentFPVersion = ntohl(uTemp);再重新编译,运行,果然烦人的Alignment trap消失了。这也提醒我们,平时在写代码的时候,在内存访问上,尽量使用memcmp,memcpy,memset等函数,而不要为了方便,直接对指针内容进行访问。这样的代码在x86上可能没问题,但是运行到arm上,就可能会出问题。关于为什么在arm上会出现Alignment trap,可以参考http://hi.baidu.com/simplejoy/blog/item/cf456c8b1549e617c8fc7ad6 .html
新闻热点
疑难解答