1.问题现象
项目中代码执行过程中报错,大致报错是runtime error member access within misaligned address which requires 4 byte alignment
2.问题定位
typedef struct {
unit16_t count;
uint8_t data[0]; // store demo_t list
} demo_list_t;
typedef struct {
uint32_t tpye;
bool flag;
uint32_t value;
} demo_t;
demo_list_t demo_list;
demo_t* demo_list = (demo_t*)demo_list.data;
定位出问题的代码大致如上,代码需求是将demo_t的结构体数组存到demo_list_t的data字段中,起初怀疑是demo_t结构体没有字节对齐,遂修改之,依然报错;重新审视代码,发现demo_list_t结构体的data字段没有按4字节对齐
3.问题解决
typedef struct {
unit16_t count;
uint16_t reserved;
uint8_t data[0]; // store demo_t list
} demo_list_t;
将demo_list_t进行4字节对齐,问题解决,记录之。