程序编译通过,调试时错误指向else一行,可是那一行就只有else,没有其他的了,为什么啊?(我程序里指针很多,逻辑错误一般多)
报错:unhandled  exception。。access violation。

解决方案 »

  1.   

    在else上下一两行看看是否存在空指针错误。
    最好是巧妙的飚上代码,让我们一起巧妙的看看
      

  2.   

    if(   (t_node=find_tnode(th,wordStr))   ==NULL)    //如果该词在tlist中没有,则添加一个
    {
    termNum=get_tnodeNum(th);
    termNum++;

    th=add_tnode(th,wordStr,termNum,0);  //将wordstr添加到词链表th中   *th???? wl=add_wnode(wl,termNum,wordFreq,-1,-1); //并将其添加入该doc已输入的词链表    wnode为该doc的词链表 }                 
    else
    {                                 //若wordStr在tlist中已有 if (   (w_node=find_wnode(wl,t_node->id))  ==NULL)
    {    //若在wlist中没有
    wl=add_wnode(wl,t_node->id,wordFreq,-1,-1);
    }
    else
    {
    w_node->freq++;
    } }
      

  3.   

    Debug下打开call stack,看函数调用堆栈吧
      

  4.   

    可能是程序中的指针,访问内存出问题了!单看代码没看出萨问题。这样试下:
    project ->setting->c/c++ ->code generation->use run-time lib ->debug multithreaded Dll
      

  5.   

    嵌套太多,代码if else嵌套太多层了。嵌套多少层是有规定的。楼主嵌套多少层了?
      

  6.   

    if()
    {
      if()
      {
       }
      else
        {
          if()
          {
           }
          else{}
        }
    }   嵌套了很多在第一个else哪里报错的     
      

  7.   

    termNum=get_tnodeNum(th);
    termNum++;th=add_tnode(th,wordStr,termNum,0); //将wordstr添加到词链表th中 *th????wl=add_wnode(wl,termNum,wordFreq,-1,-1); //并将其添加入该doc已输入的词链表 wnode为该doc的词链表 应该是这几句有指针内存溢出的错误。add_tnode、add_wnode这俩个函数应该有使用错误
      

  8.   

    if( (t_node=find_tnode(th,wordStr)) ==NULL) //可能有问题
    {
    ……
    wl=add_wnode(wl,termNum,wordFreq,-1,-1); //可能有问题}   
    else

    }
    find_tnode或者add_wnode函数有问题,这其中某函数破坏了栈,返回的时候被检测出来了。楼主仔细跟进去找找。