關於位元組對齊。。一個坑慘了的大坑
阿新 • • 發佈:2020-08-07
忘記恢復位元組對齊,會帶來極其嚴重的問題。。。。甚至還會導致程式碼段出現各種未知的Segmentation fault
(我就遇到了,直接導致某段程式碼經過編譯就會crash,因為引用了這個忘了‘取消對齊設定’的有檔案,直接導致程式碼段混亂了。。)
#pragma pack(push,1) // 是指把原來對齊方式設定壓棧,並設新的對齊方式設定為1個位元組對齊 struct OGWHeader { uint32_t MsgType; uint32_t BodyLength; }; #pragma pack(pop) // 恢復對齊狀態
(ps: 或者用#pragma pack(n) 和 #pragma pack () 也可以。)
#pragma pack(pop) //不要忘了 恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態
#pragma pack(pop) // 不要忘了恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態
#pragma pack(pop) //不要忘了恢復對齊狀態