1. 程式人生 > 實用技巧 >關於位元組對齊。。一個坑慘了的大坑

關於位元組對齊。。一個坑慘了的大坑

忘記恢復位元組對齊,會帶來極其嚴重的問題。。。。甚至還會導致程式碼段出現各種未知的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) //不要忘了恢復對齊狀態