close

昨天那個bug是alignment的問題 ...

如果你structure裡面擺放的東西, 指向不是四的倍數的話.

當你的pointer被別人assign, 硬體應該會是truncate掉後面的尾數.

那個例子是

address 0X05986414 剛好沒被整除

所以要做assignment的時候, 會被truncate為0X05986412 再去assignment --> 因此才會只有assignment部分的值

第二個field 之所以會覆蓋到第一個, 就更清楚了, 因為 0X05986414 + 4 byte = 0X05986418

g_indic_rule_engine_cntx.g_cluster_start_p = 0X12345678 ;
g_indic_rule_engine_cntx.g_cluster_end_p = 0XAAAABBBB ;

會發現 記憶體 內容變成 0XBBBB1234
0X0000AAAA

答案就解ㄌ


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 clw89u 的頭像
    clw89u

    My belief is myself

    clw89u 發表在 痞客邦 留言(0) 人氣()