2013-01-15 116 views

回答

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'. */ 
+0

也許值得一提的是'strlen_s'和類似的安全功能都可以用於在緩衝區的大小已知時防止此問題。 –