内存对齐问题

来源:互联网 发布:淘宝刷微博粉丝软件 编辑:程序博客网 时间:2024/06/10 00:43
int main(int argc, char* argv[])
{
char sz[5] = {0};
int* pInt = (int*)(sz + 1);
printf("%d\n",*pInt);
return 0;

}

当程序运行在惠普安腾服务器上时,会报错 Bus error(coredump),引发信号SIGBUS,导致程序崩溃

//具体原因在于 指针pInt指向的地址不是内存对齐的,解决方法有待考虑。。


以指针形式访问内存地址时,地址必须是 字节对齐 ,即地址必须是指针类型长度的整数倍,当不符合此规则时,惠普服务器会引起内核崩溃;

在windows环境正,程序仍然能够继续运行,不过在测试用的控制台程序中,程序有着明显的运行速度变慢。

原创粉丝点击