0xC0000005: 读取位置0x00000000时发生访问冲突
问题截图如下:
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/454778589076171.png?x-oss-process=image/auto-orient,1/resize,w_320,m_lfit)
通过断点单步运行初步排查出问题指针为:szFileModel
bool SVMTrain(TCHAR*szFileData,TCHAR*szFileModel,TCHAR*szFileDataScaleParam,int iKernelFunc,int iFold,TCHAR*szOtherParams,tstring &sRetString)
{
tstring sAppPath=FMAddBackSlash(pApp->Path());
tstring sSVMExeTrain=sAppPath+mc_szTrainExeFile;
if (szFileData&&szFileModel&&_tcscmp(szFileData,szFileModel)==0)
{
sRetString=TEXT("特征数据文件和要生成的model文件不能是同一文件");
return false;
}
if (szFileData&&szFileDataScaleParam&&_tcscmp(szFileModel,szFileDataScaleParam)==0)
{
sRetString=TEXT("特征数据文件和归一化参数文件不能是同一文件");
}
if (szFileModel&&szFileDataScaleParam&&_tcscmp(szFileModel,szFileDataScaleParam)==0)
{
sRetString=TEXT("要生成的model文件和归一化参数文件不能是同一文件");
return false;
}
TCHAR*szPath=NULL,*szExp=NULL;
TCHAR*szFileNameOnly=FMTrimFileName(szFileData,true,true,&szPath,&szExp);
tstring sFileDataScale,sCmdLine;
if (!SVMScaleData(szFileData,szFileDataScaleParam,false,sFileDataScale))
{
sRetString=sFileDataScale;
return false;
}
sCmdLine=TEXT("\"")+sSVMExeTrain+TEXT("\" ");
sCmdLine=sCmdLine+TEXT(" -t ")+Str(iKernelFunc);
if (szFileModel==NULL)
sCmdLine=sCmdLine+TEXT(" -v")+Str(iFold);
sCmdLine=sCmdLine+TEXT(" ")+szOtherParams+TEXT(" ");
sCmdLine=sCmdLine+TEXT(" \"")+sFileDataScale+TEXT("\" ");
if(szFileModel!=NULL)
sCmdLine=sCmdLine+TEXT(" \"")+szFileModel+TEXT("\"");
if (!RunBat(szPath,TEXT("svmtrain.bat"),sCmdLine))
{
sRetString=TEXT("SVM训练失败,无法在文件夹:");
sRetString=sRetString+szPath+TEXT("中创建或运行批处理文件:svmtrain.bat ")+TEXT("请设置断点后检查此文件的内容");
return false;
}
tstring sFileResult;
if (szFileModel==NULL)
{
sFileResult=sFileDataScale+TEXT("(t=")+Str(iKernelFunc)+TEXT(").training_result");
if (FMFileExist(sFileResult.c_str())!=1)
{
sRetString=TEXT("SVM训练失败,未能生成训练结果文件:")+sFileResult;
return false;
}
sRetString=sFileResult;
}
else
{
if (FMFileExist(szFileModel)!=1)
{
sRetString=TEXT("model文件生成失败,未能生成model文件:");
sRetString=sRetString+szFileModel;
return false;
}
sRetString=szFileModel;
}
return true;
}
问题其他相关截图:
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/410890689076187.png?x-oss-process=image/auto-orient,1/resize,w_320,m_lfit)
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/324701689076157.png?x-oss-process=image/auto-orient,1/resize,w_320,m_lfit)
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/76041168907618.png?x-oss-process=image/auto-orient,1/resize,w_320,m_lfit)