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
答案就解ㄌ
全站熱搜