在函数中反复使用CString会造成Stack溢出,求解?

cjfmail cjfmail 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
源码如下,求大神帮忙看看,为什么总是出现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+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

全国大学生电子设计大赛项目合集全国电赛优秀作品全国大学生电子设计竞赛,简易风洞及控制系统(主控板+供电驱动)工程文件分享

全国大学生电子设计大赛项目合集全国电赛优秀作品全国大学生电子设计竞赛,简易风洞及控制系统(主控板+供电驱动)工程文件分享

zz_ll9023

国央企如何准确把握行业发展趋势,优化创新资源配置,提升核心竞争力?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

利用MATLAB和NASA GMAT实现自动近地轨道传播、地面站可见性和电池EPS分析.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

科技服务机构如何借助大数据提升服务客户的精准度?.docx

科技服务机构如何借助大数据提升服务客户的精准度?

BIZKEEN
评论 3
收藏 已收藏
分享
返回顶部
cjfmail
VC/MFC 16,550 成员 421,606 内容