0

http://msdn.microsoft.com/en-us/library/78zh94ax%28v=vs.80%29.aspxによると、

wcslen 関数およびその他の同様の関数は、バッファ オーバーランの問題によって引き起こされる潜在的な脅威にさらされます。

心配する必要がありますか? はいの場合、どうすればこれらの機能を安全に使用できますか?

4

1 に答える 1

0

心配する必要があるwcslenのと同じくらい心配する必要がありますstrlen。これらの関数は、C 文字列、つまりヌル バイト (0x00) で終了する一連の文字へのポインタを想定しています。null バイトを含めない場合、喜んでメモリをトラバースし続けます (渡されたバッファの制限を超えて実行されます)。

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 に答える