自己遇到的问题,在对一个内存块写数据时,出现“本机异常”错误,后来发现是访问内存没有符合ARM的边界对齐要求……
出问题的语句:
*(int *)(Packet + NowOffset) = htonl(BindSetInfo.ItemInfo[i].ItemCount);
此时,Packet = 0x00055bd0, NowOffset = 0x0000001f
写入4字节int型数据的地址不是对齐的……出现DataAbort错误。
对内存访问时,ARM边界对齐的问题还是很关键的……特此记录下。
Google 下ARM字节对齐问题,文章很多……