![](/img/trans.png)
[英]Simple C code works fine on HPUX but segfaults on Linux. Why?
[英]Why does this code crash on HPUX?
我写了一个小程序,它类似于我在项目中面临的问题。 问题是,为什么在HP-UX平台上运行时它会崩溃?
错误:
si_code:1-BUS_ADRALN-无效的地址对齐
代码:
int main()
{
uint8_t *cmd ;
cmd = (uint8_t *) malloc(77);
uint32_t gen = 20;
*(uint32_t*)&cmd[10] = gen; /* crash here */
return 0;
}
&cmd[10]
不能正确对齐以存储32位整数–因为cmd
每个元素长一个字节,并且malloc
返回的地址正确对齐了“任何类型”,因此cmd
的第11个元素不会被4整除的地址
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.