_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
新聞熱點
疑難解答