CString sBuf;
CSysWorkPars sysInfo;
memset(&sysInfo,NULL,sizeof(sysInfo));
BOOL bTag=GetSysWorkPars(GTID,sysInfo);
这是我写在一个函数里的一段代码,当执行完最后的函数GetSysWorkPars的时候,在开头定义的sBuf就无效了。
我知道一定是在GetSysWorkPars函数里出的问题,可有可能时什么引起的呢,如何进行调试呢。望高手指点。
CSysWorkPars sysInfo;
memset(&sysInfo,NULL,sizeof(sysInfo));
BOOL bTag=GetSysWorkPars(GTID,sysInfo);
这是我写在一个函数里的一段代码,当执行完最后的函数GetSysWorkPars的时候,在开头定义的sBuf就无效了。
我知道一定是在GetSysWorkPars函数里出的问题,可有可能时什么引起的呢,如何进行调试呢。望高手指点。
正常结贴:0
未结贴:4How do you find the sBuf invalid?
既然你认为GetSysWorkPars函数出了问题,把GetSysWorkPars函数的代码贴出来啊
所以你的这行代码被优化掉了
所以sBuf调试的时候根本不存在
.........................
sBuf根本就没有复直嘛
但他这种情况是,这个sBuf变量调试器找不到
我在后边sBuf.Format("%s","dsadsa"); 报错了。
我在后边sBuf.Format("%s","dsadsa"); 报错了。
CString sBuf;放到
BOOL bTag=GetSysWorkPars(GTID,sysInfo);
的后面试试
不过你可以CString sBuf;
CSysWorkPars sysInfo;
把这两行上下掉下再试试,
估计应该就是你那个函数的的问题,越界操作了
在GetSysWorkPars函数里面使用的?
操作越界是什么意思,怎么判断是否越界。
13楼:我确定在后边使用了 GetSysWorkPars函数里不能用到外边的sBuf变量。
{
int i;
CPtrArray rd;
CSysWorkPars *pWork;
AfxGetSQLMng()->GetSysWorkInfo(rd,GTID);
if (!rd.GetSize())
return 0;
for(i=0;i<rd.GetSize();i++)
{
pWork=(CSysWorkPars *)rd.GetAt(i);
info=*pWork;
delete [] pWork;
}
pWork=NULL;
rd.RemoveAll();
AfxGetSQLMng()->GetRealIP(rd,GTID);
if (!rd.GetSize())
return 0;
CIPSetting *pIP;
for(i=0;i<rd.GetSize();i++)
{
pIP=(CIPSetting *)rd.GetAt(i);
memcpy(info.IpDef,pIP,sizeof(info.IpDef));
delete [] pIP;
}
pIP=NULL;
rd.RemoveAll();
AfxGetSQLMng()->GetCalibrate5DotsPars(rd,GTID);
if (!rd.GetSize())
return 0;
CCalibrate5DotsPars *pCa;
for(i=0;i<rd.GetSize();i++)
{
pCa=(CCalibrate5DotsPars *) rd.GetAt(i);
info.sLoadCal=*pCa;
delete[] pCa;
} pCa=NULL;
rd.RemoveAll();
AfxGetSQLMng()->GetCalibratePars(rd,GTID);
if (!rd.GetSize())
return 0;
CCalibratePars *PCaa;
for(i=0;i<rd.GetSize();i++)
{
PCaa=(CCalibratePars *)rd.GetAt(i);
info.sPosCal=*PCaa;
delete [] PCaa;
}
PCaa=NULL;
rd.RemoveAll(); AfxGetSQLMng()->GetNotifySetting(rd,GTID);
if(!rd.GetSize())
return 0;
CNotifySetting *pNot;
int s=rd.GetSize();
for(i=0;i<rd.GetSize();i++)
{
pNot= (CNotifySetting *) rd.GetAt(i);
info.sNSDef[i]=*pNot;
delete [] pNot;
}
pNot=NULL;
rd.RemoveAll(); return 1;
}
代码 哪位高人帮看看
CSysWorkPars sysInfo;
memset(&sysInfo,NULL,sizeof(sysInfo));
BOOL bTag=GetSysWorkPars(GTID,sysInfo);
sBuf.Format("%s","dsadsa");
紧挨着使用的 ,中间没操作过sBuf
{
pNot= (CNotifySetting *) rd.GetAt(i);
info.sNSDef[i]=*pNot;
delete [] pNot;
}
这里info.sNSDef[i]=*pNot;i会不会超过info.sNSDef定义的大小