一個小問題,栽了我幾個小時,寫出來以示警告。
strset在原碼爲:
char* _strset (char* szToFill, int szFill)
{
char *t = szToFill;
while( *szToFill != 0 )
{
*szToFill = szFill;
szToFill++;
}
return t;
}
這個函數實現方式不明顯,一直覆值,直到szToFill爲空爲止。那麼szToFill什麼時候爲空呢?對於一個未被初始化的數組,並沒沒結束標誌。這是一個極其危險的函數,很有可能會沖掉相臨內存中的數據,導致奇怪的問題。
使用別的函代碼此功能。如strncat,memset。