strset

一個小問題,栽了我幾個小時,寫出來以示警告。

 

strset在原碼爲:

char* _strset (char* szToFill, int szFill)
{
char *t = szToFill;
while( *szToFill != 0 )
{
*szToFill = szFill;
szToFill++;

}
return t;
}

這個函數實現方式不明顯,一直覆值,直到szToFill爲空爲止。那麼szToFill什麼時候爲空呢?對於一個未被初始化的數組,並沒沒結束標誌。這是一個極其危險的函數,很有可能會沖掉相臨內存中的數據,導致奇怪的問題。

 

 

 

使用別的函代碼此功能。如strncat,memset。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章