Is there cases where a 32-bit variable could not been properly-aligned

二次信任 提交于 2019-12-05 09:48:53

If you don't tell the compiler to do otherwise, then it will align 32-bit variables correctly.

You can write code which places 32-bit variables at non-aligned addresses (for example by creating an array of char, and writing your int to an odd index in the array).

You can also use compiler #pragmas to tell the compiler not to align specific types or variables.

But if you don't do any of that, then your variables will be aligned properly.

#pragma pack(1)
struct _not_aligned {
  uint8_t a;
  uint32_t b; // unaligned 32-bit
};
#pragma pack()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!