在函数中反复使用CString会造成Stack溢出,求解?
源码如下,求大神帮忙看看,为什么总是出现0xC00000FD: Stack overflow
CFile fParseTxtFile;
if(!fParseTxtFile.Open(szFileName,CFile::modeRead)) {
AfxMessageBox(_T("文件打开失败!"));
return;
}
int nDotSize = 0;
char szReadLine[1024] = {0};
arryData.RemoveAll();
int nReadByteSize = fParseTxtFile.Read(szReadLine,1024);
CString szLinetxt;
szLinetxt = CString(szReadLine,nReadByteSize);
DWORD dwLoadValue;
unsigned char *pDotsPtr = (unsigned char*)&dwLoadValue;
unsigned char readChar = 0;
unsigned char indexDot = 0;
while(!szLinetxt.IsEmpty()) {
CString szHexInfo;
USES_CONVERSION;
while(szLinetxt.GetLength() >= 2) {
if(byteCount == 0x1BE0) {
nCount = 61;
}
szHexInfo = szLinetxt.SpanIncluding(CString("0123456789ABCDEFabcdef"));
if(szHexInfo.IsEmpty()) {
if(szLinetxt.GetLength() >= 2) {
szLinetxt = szLinetxt.Mid(1);
continue;
}
}else if(szHexInfo.GetLength() < 2) {
break;
}else if(szHexInfo.GetLength() == 2) {
readChar = _strtoi64(T2A(szHexInfo),NULL,16);
if(indexDot == 0) {
*pDotsPtr = readChar;
}else if(indexDot == 1) {
*(pDotsPtr+1) = readChar;
}else if(indexDot == 2) {
*(pDotsPtr+2) = readChar;
if(readChar & 0x80) {
*(pDotsPtr+3) = 0xFF;
}else{
*(pDotsPtr+3) = 0x00;
}
}
indexDot = indexDot + 1;
if(indexDot == 3) {
arryData.Add(dwLoadValue);
byteCount++;
indexDot = 0;
}
szLinetxt = szLinetxt.Mid(szHexInfo.GetLength()+1);
}else{
int nHexBytesSize = szHexInfo.GetLength();
int nRemoveBytes = 0;
while(szHexInfo.GetLength() >= 2) {
CString sznewHexinfo = szHexInfo.Left(2);
readChar = _wtoi(sznewHexinfo);
if(indexDot == 0) {
*pDotsPtr = readChar;
}else if(indexDot == 1) {
*(pDotsPtr+1) = readChar;
}else if(indexDot == 2) {
*(pDotsPtr+2) = readChar;
if(readChar & 0x80)
*(pDotsPtr+3) = 0xFF;
else
*(pDotsPtr+3) = 0x00;
}
indexDot = indexDot + 1;
if(indexDot == 3) {
arryData.Add(dwLoadValue);
indexDot = 0;
}
szHexInfo = szHexInfo.Mid(2);
nRemoveBytes += 2;
}
if(szLinetxt.GetLength() > nHexBytesSize) {
szLinetxt = szLinetxt.Mid(nHexBytesSize + 1);
}else{
szLinetxt = szLinetxt.Mid(nRemoveBytes);
}
}
}
nReadByteSize = fParseTxtFile.Read(szReadLine,1024);
if(nReadByteSize == 0) {
break;
}
szLinetxt = szLinetxt + CString(szReadLine,nReadByteSize);
}
fParseTxtFile.Close();
...全文
相关推荐
科技服务机构如何通过数据分析增强服务专业性?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
全国大学生电子设计大赛项目合集全国电赛优秀作品全国大学生电子设计竞赛,简易风洞及控制系统(主控板+供电驱动)工程文件分享
全国大学生电子设计大赛项目合集全国电赛优秀作品全国大学生电子设计竞赛,简易风洞及控制系统(主控板+供电驱动)工程文件分享
国央企如何准确把握行业发展趋势,优化创新资源配置,提升核心竞争力?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
利用MATLAB和NASA GMAT实现自动近地轨道传播、地面站可见性和电池EPS分析.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
科技服务机构如何借助大数据提升服务客户的精准度?.docx
科技服务机构如何借助大数据提升服务客户的精准度?


