if(strctlSet=="801A")//APN用密码
{
CString strComment,strSum,strCha
strComment+="26";
strSum="";
for(int k=2;k>=0;k-=2)
{
strSum+=strctlSet.Mid(k,2);
}
strComment+=strSum;
strComment+="00010203";
strCha="0000000000000000000000000000000000000000000000000000000000000000";
strCha.Delete(64-m_data.GetLength()*2,m_data.GetLength()*2);
char *buff=(char* )(LPCTSTR)m_data;
char *desbuff=new char[m_data.GetLength()*2];
for(int i=0;i<m_data.GetLength();i++)
{
sprintf(desbuff+2*i,"%X",*buff+i);
}
CString s2;
s2.Format("%s",desbuff);
strCha+=s2;
strSum="";
for(int m=62;m>=0;m-=2)
{
strSum+=strCha.Mid(m,2);
}
strComment+=strSum;
delete desbuff;//***************错误发生的地方***********************
desbuff=NULL; }为什么我单步调式到这里就程序就挂掉了
错误:DAMAGE:before Normal block(#118866) at 0x00477910(desbuff指针)
new跟delete对应上
而且也过了生存期
为什么不能释放掉
跪求原因
{
CString strComment,strSum,strCha
strComment+="26";
strSum="";
for(int k=2;k>=0;k-=2)
{
strSum+=strctlSet.Mid(k,2);
}
strComment+=strSum;
strComment+="00010203";
strCha="0000000000000000000000000000000000000000000000000000000000000000";
strCha.Delete(64-m_data.GetLength()*2,m_data.GetLength()*2);
char *buff=(char* )(LPCTSTR)m_data;
char *desbuff=new char[m_data.GetLength()*2];
for(int i=0;i<m_data.GetLength();i++)
{
sprintf(desbuff+2*i,"%X",*buff+i);
}
CString s2;
s2.Format("%s",desbuff);
strCha+=s2;
strSum="";
for(int m=62;m>=0;m-=2)
{
strSum+=strCha.Mid(m,2);
}
strComment+=strSum;
delete desbuff;//***************错误发生的地方***********************
desbuff=NULL; }为什么我单步调式到这里就程序就挂掉了
错误:DAMAGE:before Normal block(#118866) at 0x00477910(desbuff指针)
new跟delete对应上
而且也过了生存期
为什么不能释放掉
跪求原因
char *desbuff=new char[m_data.GetLength()*2];
for(int i=0;i <m_data.GetLength();i++)
{ sprintf(desbuff+2*i,"%X",*buff+i); }
这段有问题,char *buff=(char* )(LPCTSTR)m_data; 这段应该先LockBuffer
然后用GetBuffer获取内容
使用完之后再UnlockBuffer
int length = m_data.GetLength();
for(int i=0; i<length; i++)
{
sprintf(desbuff + 2*i, "%02X", buff[i]);
}
memset(desbuff,0,m_data.GetLength()*2+1);//最好先清零
for(int i=0;i <m_data.GetLength();i++)
{ sprintf(desbuff+2*i,"%X",*buff+i); }