Expression:_CrtIsValid HeapPointer(pUserData) 内存调用上的错误,可我不会改,55555,请高手看一眼

素才 2008-07-10 07:50:22
编译没问题,运行时Expression:_CrtIsValid HeapPointer(pUserData) 内存调用上的错误,可我不会改,55555,请高手看一眼
class CPreProcess
{
private:
CString STitle,SKeyword;
CStdioFile CleanTxt;
public:
CPreProcess();
void GetCleanTxt(CString sFileName);
CString GetStrBetween(CString sFileName,CString stra,CString strb);

virtual ~CPreProcess();

};

CString CPreProcess::GetStrBetween(CString sFileName,CString stra,CString strb)
{
if(sFileName!="")
{
CFile file(sFileName,CFile::modeRead);
int nFileLength=file.GetLength();
char *txtbuffer;
HGLOBAL hgl=::LocalAlloc(GMEM_MOVEABLE,nFileLength+1);
txtbuffer=(char *)::LocalLock(hgl);
file.Read(txtbuffer,nFileLength);
CString S=txtbuffer;

free(txtbuffer);
LocalFree(hgl);
GlobalFree(hgl);

int pos1=S.Find(stra,0);//删除从stra到strb之间的内容
int pos2=S.Find(strb,0);
S.Delete(pos1,pos2-pos1);
if(S.Replace(stra+":","")==0)S.Replace(strb+":","");
S.TrimLeft();//去掉最前最后无意义的空格等符号
S.TrimRight();
file.Close();
return S;};
}



void CPreProcess::GetCleanTxt(CString sFileName)
{

CString S=GetStrBetween(sFileName,"编号","题目");CleanTxt.Open("cleantxt.txt",CFile::modeCreate|CFile::modeWrite);
CleanTxt.WriteString(S);
CleanTxt.Close();}


主程序里只涉及到了这两句话,应该没有错
CPreProcess PreProcess;
PreProcess.GetCleanTxt(sFileName);
...全文
462 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
neo_one 2009-11-27
  • 打赏
  • 举报
回复
看看是不是指针变了,不是原来的了,因而free失败
素才 2008-07-10
  • 打赏
  • 举报
回复
CFile file(sFileName,CFile::modeRead);
int nFileLength=file.GetLength();
char *txtbuffer;
HLOCAL hgl=::LocalAlloc(GMEM_MOVEABLE,nFileLength+1);
txtbuffer=(char *)::LocalLock(hgl);
file.Read(txtbuffer,nFileLength);
CString S=txtbuffer;
::LocalUnlock(hgl);
::LocalFree(hgl);


去了free(txtbuffer)这一行
这么就行了...决定把这个帖子杀死...

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧