今天帮个同学改个东西..突然出现个问题,求达人指点下..
附件里边的关键代码如下:
//就是按下OK按钮发生的事件
//分配一个空间->将一段字符串复制进去->计算检验和->释放空间
void CAddressQDlg::OnOK()
{
//char *buff=new char[strlen("AT+SSCAN,*")+5];
char *buff=new char[63];//我的机器上少于63就会报错
if(!buff) return;
strcpy(buff,"AT+SSCAN,*");
checkSum(buff,strlen(buff)+1);
//sendDataFunction(buff,strle(buff+1));
delete []buff;
//CDialog::OnOK();
}
//同学写的检验函数
char * CAddressQDlg::checkSum(char *str,int length)
{
char p,q;
char k='\r';
char j='\n';
char *temp;
temp=str;
temp=temp+2;
for(p=*(temp+1);*(temp+1)!='*';temp++)
p=p^*(temp+1);
q=p;
p=p&(char)15;
q=(q&(char)(15<<4));
strcat(str,&q);
strcat(str,&p);
strcat(str,&k);
strcat(str,&j);
return str;
}
问题的关键就出在第一句...
char *buff=new char[strlen("AT+SSCAN,*")+5]
这句分配出来的空间居然不够..然后发现不分配大于等于63的char空间都会出错,真的不明白..
[ 此帖被lxlcn在2007-12-25 21:58重新编辑 ]