我想在我的 x86 机器上创建内存地址对齐错误。我为什么要这样做?因为我想明确测试我的 SIGBUS 处理程序。
这是我的测试示例。
#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 上做到这一点。
我该怎么做?