【发布时间】:2013-04-27 07:05:22
【问题描述】:
我想在我的 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 上做到这一点。
我该怎么做?
【问题讨论】:
-
This post about mis-aligned pointers 似乎在问类似的问题。我不确定它是否重复,但它可能会引导您朝着正确的方向前进。
-
@Mark - 感谢您的参考。搜索正在成为一门艺术。不同之处在于,做文章中所做的只会导致 SIGSEGV 而不是 SIGBUS。 SIGBUS 是我真正感兴趣的。