CString strtemp,str;
while(!feof(fpOntology))  
{
   if((c=fgetc(fpOntology))!='\n')
  {
tempword[i++]=c;
  }
   else
   {
     strtemp.Format("%s",tempword); 
     p=(OntologyNode *)malloc(sizeof(OntologyNode));
     index=strtemp.Find('\t');
     str=strtemp.Left(index);  //出错的地方
     p->member1=new char(30);
     strcpy(p->member1,str);
    .
...........
   }
}从文件中读出每一行,然后把每一行的单词按'\t',分出一个一个单词,
可是读到第5行的时候,也就是循环5次的时候, str=strtemp.Left(index);就出现错误,File:dbgheap.c,Line:1017.
断点调试时,进入: pPrev->pEntryPrev->pEntryNext = pPrev->pEntryNext;请VC高手们指教!!!

解决方案 »

  1.   

    index=strtemp.Find('\t'); index等于多少?判断过index < 0的情况吗?
      

  2.   

    没有小于零的情况,在出错的时候,index=8
      

  3.   

    strtemp 是否长度小于8,出错的时候,多看看相关变量的对应数据,看哪里有问题
      

  4.   

    网上找了下,说是多次调用CString的方法,在一定的时候(和字符串长度有关系),CString的内部引用记数器发生记数混乱,造成内存泄露。说解决的方法是加上strtemp.Empty();
    可是,我加上了,还是一样错误