找出下面程序的 BUG
int CopyStringAndCount(char * Str) ①
{
int nCount = 0;
char * pBuffer; ②
pBuffer = new char[MAX_PATH_LENGTH];
③
④
strcpy(pBuffer, Str);
for ( ; pBuffer⑤; pBuffer++ )
if ( pBuffer⑥=='//' ) nCount ++;
⑦
return nCount;
}
【题目解析】
① (const char * Str)
如果在函数体内不需要改变字符串的内容,最好加上 const 以免误修改字符串内容
② char * pBuffer = NULL;
指针声明的时候最好赋初值 NULL
③ if ( !pBuffer ) return -1;
开辟空间之后没有检查是否成功,没有错误检查
④ if ( strlen(Str)>(MAX_PATH_LENGTH-1) ) return -2;
没有检查新开辟的空间能否容纳传进来的字符串,否则有可能越界
⑤ *pBuffer
题中的原意是当到字符串末尾的时候跳出循环,所以应该是取字符串的内容
⑥ 同⑤
⑦ delete pBuffer; pBuffer=NULL;
没有释放新开辟的空间,会造成内存泄漏
程序找BUG
最新推荐文章于 2023-01-11 10:02:01 发布