怎样能写出一个总线错误的的程序?

gcshang 发布于 2012/08/03 11:10
阅读 177
收藏 1
GCC

union

{

   char a[10];

    int i;

}u;

 

int* p = (int *) & (u.a[1]);

*p = 17;

 

这是<< c专家编成159页的程序>>  程序的作用是产生一个总线错误, " 因为数组和int的联合确保数组a是按照int 的4字节对齐的, 所以"a+1" 的地址肯定没按int  对齐.当我们试图在这个地址上存储4个字节的数据,但这个访问只是按照char对齐, 这就违反了规则."(以上是书中的解释)

我在 gcc上怎么也得不到总线错误,好像总是对齐的,我怎么才能写出一个总线错误的程序呢?

 

加载中
0
gcshang
gcshang
我看有的帖子说IA-32不强制数据对齐。。。。。。是不这样的呢 。。。。。。
返回顶部
顶部