以下这段代码在CentOs上跑会引起系统错误,例core.1234
以下这段代码在CentOs上跑会引起系统错误,例core.1234,请高手帮忙查查出错的原因int SplitFlagStr2Vect(char*src,std:vector<string> &destVect,char *flag)
{
//"aaa123456789aaa122344545555" ==>> 123456789 and 122344545555
int lens=strlen(src);
int lenf=strlen(flag);
int len=lens-lenf;
char *pstr=src;
if((0==lens)||(len<0)) return 0;
if((NULL==strstr(pstr,flag)) || (0==lenf))
{
destVect.push_back(string(pstr));
return 0;
}
if(lens==strlen(strstr(pstr,flag)))
{
pstr+=lenf;
len-=lenf;
}
if(lenf==strlen(strstr(pstr,flag)))
{
pstr-=lenf;
len-=lenf;
}
for(int n=0; n<len ; n++) //Parse middle flag
{
if(NULL==strstr(pstr,flag))
{
destVect.push_back(string(pstr));
break;
}
if(strncasecmp(pstr+n,flag,lenf)==0)
{
destVect.push_back(string(pstr,n));
n+=lenf;
pstr+=n;
}
}
}
传入参数很简单,char src[]="aaa123456789aaa122344545555",flag="aaa",destVect为一个空的容器,用以接收返回值。
系统错误指向代码:
if(lens==strlen(strstr(pstr,flag)))
{
pstr+=lenf;
len-=lenf;
}