我正在爲一個ipad程序編寫一個文件加載器,並且出現了奇怪的EXC_BAD_ACCESS異常。這裏是簡短的代碼文檔片斷,我認爲是錯誤的原因:EXC_BAD_ACCESS和char指針指向浮動指針
float testFloat() {
char mem[32];
char *charPtr = &mem[0];
float *floatPtr = (float*)(charPtr + 1);
float f = *floatPtr; //EXC_BAD_ACCESS
return f;
}
發生誤差僅在charPtr偏移不被4整除,所以我想它可能有一些做與指針在ARM CPU上對齊。
'字符*'和'無符號字符*'是從嚴格走樣規則相容,因此這段特定的代碼不會違反它。 – ildjarn
@ildjarn:你說得對。我忘了你可以用'char'替代別名。將修復答案。 – Mysticial
謝謝,我會用一些memcpy的。我仍然覺得這個錯誤有點奇怪,是不是編譯器有義務爲這個剪輯生成工作二進制文件?或者它違反了一些規則? –