作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
MSVC 的“安全”sprintf
函数有一个“知道”目标缓冲区大小的模板版本。但是,这段代码在 bytes
...
char bytes[5];
_snprintf_s( bytes, _TRUNCATE, "%s", "1234567890" );
知道我做错了什么,或者这是一个已知的错误吗?
(我在 VS2005 中工作 - 2008 年或 2010 年没有测试)
最佳答案
确实是 a bug in Visual C++ 2005 (我无法访问该链接;Google also has it cached)。
我能够在 Visual C++ 2005 中重现该问题。在 Visual C++ 2008 和 2010 中,字符串被正确截断(bytes
包含 1234\0
)并且 -1
按预期返回。
关于c++ - `snprintf_s` 错误的安全感,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2738260/
MSVC 的“安全”sprintf 函数有一个“知道”目标缓冲区大小的模板版本。但是,这段代码在 bytes... 结束后愉快地在堆栈上绘制了 567890 char bytes[5]; _snpri
这里有一个关于 C++ Stackwalker 的问题: https://github.com/JochenKalmbach/StackWalker #define _TRUNCATE ((size_
我是一名优秀的程序员,十分优秀!