前言
C语言中,同一个结构体在不同平台的内存对齐方式是不一样的,这也导致的占用的内存大小也不一样。这在一些场景中比较麻烦。下面介绍统一对齐方式的一种方法。
一、pragma pack()
// #pragma pack(1), 1字节对齐,举例:
//1字节对齐
#pragma pack(1)
//test 大小为10
typedef struct
{
uint8_t a;
uint8_t b;
float val1;
float val2;
} test;
//取消1字节对齐
#pragma pack()
//test1 大小为12
typedef struct
{
uint8_t a;
uint8_t b;
float val1;
float val2;
} test1;
二、注意
使用#pragma pack(1)
后,如果再使用memcpy()
函数,会导致Hard Fault
错误。