(8/10BUG)字節對齊未還原

今天遇到個超級奇葩的問題

好不容易把服務端和客戶端的通信弄明白了 然後下發數據到客戶端

調試跟進 發現數據是OK的 然後顯示 坑來了 顯示的數據完全錯誤

繼續F12,問題在這

BYTE res = *(BYTE *)protocol->data;
result->kill = res;

有什麼問題呢 res的值是4 複製給result->m_kill,然後這個kill的值也變成了4

但是 當我把這個變量拿來用的時候發現 它會自動變成512,天吶,這尼瑪撞鬼了嗎?

然後我再用一個全局變量來獲取res的值 發現不會變

於是確定是result這個對象,然而這個對象就是一個自定義的數據類,裏面只有賦值操作。並且kill這個變量也是整形

那就奇怪了啊,到底什麼問題呢?

最後問師父 ,師父告訴我,他在做字節對齊的時候忘了還原。。。也就是#pragma  pack(1) 這句後面沒有加上#pragma pack()

天吶。。。。具體字節對齊會造成這種情況的原因, 各位自己去百度下 哈哈 繼續代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章