strset

一个小问题,栽了我几个小时,写出来以示警告。

 

strset在原码为:

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

}
return t;
}

这个函数实现方式不明显,一直覆值,直到szToFill为空为止。那么szToFill什么时候为空呢?对于一个未被初始化的数组,并没没结束标志。这是一个极其危险的函数,很有可能会冲掉相临内存中的数据,导致奇怪的问题。

 

 

 

使用别的函代码此功能。如strncat,memset。

你可能感兴趣的:(MFC)