0

根据http://msdn.microsoft.com/en-us/library/78zh94ax%28v=vs.80%29.aspx

wcslen 函数和其他类似函数会招致缓冲区溢出问题带来的潜在威胁。

我应该担心吗,如果是,我怎样才能安全地使用这些功能?

4

1 回答 1

0

你应该担心的事情和你应该担心的事情wcslen一样多,例如strlen。这些函数需要一个 C 字符串,即指向以空字节 (0x00) 终止的字符序列的指针。如果您不包含空字节,它们将愉快地继续遍历内存(超出您传递给它们的任何缓冲区的限制):

const char s1[] = { 'a', 'b', 'c' }; /* Array of three characters, no null-terminator */
strlen( s1 );                        /* Unsafe, anything may happen. */

const char s2[] = "abc";             /* Array of three characters plus null-terminator */
strlen( s2 );                        /* Safe, returns '3'. */
于 2013-01-15T09:49:18.997 回答