我写了一个小程序,类似于我在项目中遇到的问题。问题是,为什么在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;
}
答案 0 :(得分:3)
&cmd[10]
未正确对齐以存储32位整数 - 因为cmd
的每个元素都是一个字节长,malloc
返回的地址正确对齐“任何类型“cmd
的第11个元素不会被4整除的地址。