调试执行以下程序
a;
b;
c;
每次调试到b的时候,肯定出现debug assert failed这样的对话框,但是如果我把
watch窗口里面的变量全部删除,或者清空,那么这个错误就不会出现了。
我想知道这个是为什么?
是我程序有问题呢,还是别的什么原因呀?

解决方案 »

  1.   

    又是assert failed的问题啊
    估计哪儿漏了什么东东了
      

  2.   

    void CDemo_DevStudioDoc::GetRealPath()
    {
    CPolyline allNodes;
    allNodes.RemoveAll();
    CArray<int,int> roadNumbers;
    int j=0;
    //roadNumbers.RemoveAll();
    for(int i=0;i<m_pathNumber.GetSize()-1;i++)
    {
    j=GetRoadNumberOfTwoJoint(m_pathNumber.GetAt(i),m_pathNumber.GetAt(i+1));
    roadNumbers.Add(j);
    }

    if(m_pathNumber.GetSize()<=1) return;
    //以下开始在道路层中寻找路径
    //CMapLayer *pMapLayer;
    COwnerDrawLine *pLine=NULL;
    POSITION pos;
    //pMapLayer=m_pLayerSet->GetLayer("临时道路层");
    if(m_pTmpRoadLayer)
    {
    for(i=0;i<roadNumbers.GetSize();i++)
    {
    //找到道路
    if(roadNumbers.GetAt(i)!=-1)
    {
    pos=m_pTmpRoadLayer->m_pObjectManager[PRIMITIVE_LINE]->m_lsObject.GetHeadPosition();
    while(pos)
    {
    //获取道路上符合要求的节点
    pLine=(COwnerDrawLine*)m_pTmpRoadLayer->m_pObjectManager[PRIMITIVE_LINE]->m_lsObject.GetNext(pos);
    if((int)pLine->m_polyline.GetAt(0).x ==roadNumbers.GetAt(i))
    {
    int start=-1,end=-1;
    bool ss=false,ee=false;
    for(int ii=1;ii<pLine->m_polyline.GetSize();ii++)
    {
    if(ptEqual(m_pathNodeArray.GetAt(i),pLine->m_polyline.GetAt(ii))&&!ss)
    {
    start=ii;
    ss=true;
    continue;
    }
    else if(ptEqual(m_pathNodeArray.GetAt(i+1),pLine->m_polyline.GetAt(ii))&&!ee)
    {
    end=ii;
    ee=true;
    continue;
    }

    }
    if(start<=end&&ss&&ee)
    {
    for(ii=start;ii<=end;ii++)
    allNodes.Add(pLine->m_polyline.GetAt(ii)); }
    else if(start>end&ss&ee)
    {
    for(ii=start;ii>=end;ii--)
    allNodes.Add(pLine->m_polyline.GetAt(ii));
    }
    else
    {
    allNodes.Add(m_pathNodeArray.GetAt(i));
    allNodes.Add(m_pathNodeArray.GetAt(i+1)); }
    }
    } }
    else
    {
    allNodes.Add(m_pathNodeArray.GetAt(i));
    allNodes.Add(m_pathNodeArray.GetAt(i+1));
    }
    }
    } m_pathNodeArray.RemoveAll();
    m_pathNodeArray.Add(startp);
    for(i=0;i<allNodes.GetSize();i++)
    {
    m_pathNodeArray.Add(allNodes.GetAt(i));
    }
    m_pathNodeArray.Add(endp); pLine=NULL;}