我想在我的x86機器上創建內存地址對齊方式錯誤。我爲什麼要這樣做?因爲我想明確地測試我的SIGBUS處理程序。在x86上創建內存地址對齊方式
這是我的測試示例。
#include <stdio.h>
int main(int argc, char** argv) {
unsigned char array[32];
short *short_ptr;
short_ptr = (short *)&array[1];
*short_ptr = 0xffff; // Store
printf("value of c = %x", *short_ptr);
return 0;
}
我知道這會在SPARC體系結構上產生不對齊異常。但是,我不能在我的生活中弄清楚如何在x86上完成它。
我該怎麼辦?
[這篇文章關於mis-align指針](http://stackoverflow.com/questions/548164/mis-aligned-pointers-on-x86)似乎是問一個類似的問題。我不確定它是否是重複的,但它可能會使您朝着正確的方向前進。 – 2013-05-02 23:42:08
@Mark - 感謝您的參考。搜索正在成爲一門藝術。不同的是,在文章中做什麼只會導致SIGSEGV而不是SIGBUS。 SIGBUS是我真正感興趣的。 – 2013-05-03 00:00:39