Я использую newlib (стандартный, а не newlib nano), который входит в atollic 8.1.
в настоящее время все виды версий XXXprintf повреждают мой стек, и я не могу понять, почему.
Я добавил 3 изображения, чтобы отобразить проблему:
вариант использования 1
на изображении 3.png вы видите либо vsprintf (rt_vsnprintf - это просто макрос, отправляющий его), который записывает max. 1024 на "sBuf.printf_buffer" длиной 1024 байта и расположенный по адресу 0x20001c08 (до 0x20002008).
при этом функции newlib printf перезаписывают как минимум 1 мою переменную, расположенную по адресу 0x20006014, так что это не просто небольшое переполнение, это совсем не работает ....
Я тестировал sprintf, snprintf, vsnprintf, vsprintf. все эти функции записываются в мою переменную.
Есть у кого-нибудь представление о том, как такое поведение могло произойти?