"Безопасный" MSVC sprintf
funcions имеют шаблонную версию, которая 'знает' размер целевого буфера. Однако этот код счастливо красит 567890 по стеку после конца bytes
...
char bytes[5];
_snprintf_s( bytes, _TRUNCATE, "%s", "1234567890" );
Какая-либо идея, что я делаю неправильно, или действительно ли это - известная ошибка?
(Я работаю в VS2005 - не протестировал в 2008 или 2010),
Похоже, что это действительно ошибка в Visual C++ 2005 (у меня проблемы с переходом по ссылке; Google также кэширует ее).
Я смог воспроизвести проблему в Visual C++ 2005. В Visual C++ 2008 и 2010 строка правильно усекается (bytes
содержит 1234\0
) и -1
возвращается, как и ожидалось.