我使用 arm 代码源 (arm-none-eabi-gcc) 编译了我的代码(我认为是精简版)。
我在函数中定义了一个结构变量,然后做一个 memcpy
typedef struct {
char src[6];
char dst[6];
uint16_t a;
uint16_t b;
uint32_t c;
uint16_t d;
} Info_t;
Info_t Info;
memcpy(Info.src, src, sizeof(Info.src));
memcpy(Info.dst, dst, sizeof(Info.dst));
第一个 memcpy 通过,但第二个导致中止。
我听说 gcc 优化了 memcpy 并导致非对齐的结构访问?
我尝试将 struct 变量与单词边界等对齐。但它不起作用。
谁能提供有关 gcc 的 memcpy 和对齐问题的更多详细信息。
谢谢!