为什么这个代码在HPUX上崩溃了?

时间:2015-02-17 05:54:25

标签: c pointers casting coredump hp-ux

我写了一个小程序,类似于我在项目中遇到的问题。问题是,为什么在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;
}

1 个答案:

答案 0 :(得分:3)

&cmd[10]未正确对齐以存储32位整数 - 因为cmd的每个元素都是一个字节长,malloc返回的地址正确对齐“任何类型“cmd的第11个元素不会被4整除的地址。