我遇到了 sscanf 覆盖堆栈上另一个变量的问题。我检查了一下,意识到即使我用 sscanf 读取了一个数字,正整数也是这样的:
sscanf(InputBuffer_pu8, "%hhu", %Selection_u8)
根据 sscanf 手册页,
hh
前缀将下一个指针指定为 char*
。
然而它在内存中写入了 2 个字节的宽度,从而覆盖了堆栈上的另一个变量。
我通过使用 16 位无符号类型来修复它,但这不应该发生,对吧?我是不是遗漏了什么或者这是 arm-gcc 中的错误? (适用于 Cortex-M33 的 10.2 版)
根据this discussion,它也应该有效。