忘记恢复字节对齐,会带来极其严重的问题。。。。甚至还会导致代码段出现各种未知的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) //不要忘了 恢复对齐状态. (Note me: 一定要紧挨着struct定义)

第二次被这个字节对齐坑了,是因为我写#pragma pack的位置不对,一定要紧挨着struct定义写. 结果我写在一个头文件上面了,而这个头文件又引用了std的库,这样且不导致std的结构字节都乱了么。。

 

相关文章:

  • 2021-06-18
  • 2022-02-23
  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
  • 2021-12-16
猜你喜欢
  • 2021-09-08
  • 2021-10-06
  • 2022-01-17
  • 2021-07-21
  • 2022-12-23
  • 2021-09-22
相关资源
相似解决方案