哎,昨天被結構體對齊 給坑了。
定義了一個幾百個字節的大結構體,之前和同事通訊傳輸數據時都是正常的,最近看結構體結構不是很好看,
就把里面的一個量的位置給移了移,后來再和同事測試,發現移動的量讀出來的數據是往后排了一個字節位置。
然后就很苦惱,懷疑是結構體大小、地址數錯了?賦值時賦錯了?同事的程序有問題?數了幾遍結構體內容,感覺太費事,
費眼、費時間。沒轍了,開科歐調試,打開查看結構體在內存中的內容,數了幾下發現了原因,之前移動的那個量前面
多了一個字節,應該是編譯器自動加上的。在那里仔細看了下沒發現還真是結構體的數據排列有問題。想想得重新排列地址表,心煩。
后來給yao哥說了下,yao哥說在結構體前加一個__packed就好了,對呀,怎么忘記這個了。加上以后就都正常了。
