![](/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.