1. 程式人生 > >NDK開發armeabi下位元組對齊問題

NDK開發armeabi下位元組對齊問題

本人使用Android studio進行NDK開發,模擬器測試沒問題,真機測試出現bug:

Fatal signal 7 (SIGBUS), code 1, fault addr 0x86a16861 in tid 18277 (Thread-3484)

原因:預設位元組對齊方式下訪問float指標會引發此錯誤,模擬器是x86,而真機是arm。

解決辦法:手動設定位元組對齊方式

#pragma pack(4) //設定4位元組對齊
if (fpos>1.0)
{
    //printf("Pos: Out of range: fpos=%f\n",fpos);
    fpos=1.0;
}
else if (fpos<0.0)
{
    //printf("Pos: Out of range: fx=%f y=%f z=%f\n",x,y,z);
    //printf("Pos: Out of range: fpos=%f\n",fpos);
    fpos=0.0;
}
#pragma pack() //取消設定的位元組對齊方式