_currentFPVersion = ntohl(*((uint32_t *) (GETIBPOINTER(buffer) + 4))); //----MARKED-LONG---原來是在強(qiáng)制類型轉(zhuǎn)換讀取內(nèi)存的時(shí)候出現(xiàn)了錯(cuò)誤,于是修改為:uint32_t uTemp = 0; memcpy(&uTemp,GETIBPOINTER(buffer) + 4,sizeof(uint32_t)); _currentFPVersion = ntohl(uTemp);再重新編譯,運(yùn)行,果然煩人的Alignment trap消失了。這也提醒我們,平時(shí)在寫代碼的時(shí)候,在內(nèi)存訪問上,盡量使用memcmp,memcpy,memset等函數(shù),而不要為了方便,直接對(duì)指針內(nèi)容進(jìn)行訪問。這樣的代碼在x86上可能沒問題,但是運(yùn)行到arm上,就可能會(huì)出問題。關(guān)于為什么在arm上會(huì)出現(xiàn)Alignment trap,可以參考http://hi.baidu.com/simplejoy/blog/item/cf456c8b1549e617c8fc7ad6 .html
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注