我不输出变量时代码中断; 我这样做的时候很有效 武汉理工大学?

Mad*_*ine 1 c++

我真的不知道还有什么可说的.

我从来没有见过这种情况.而这只是让我感到困惑的原因.我想你们之前可能已经看过这个,现在我正在做些什么傻事.

关于它的注释:'temp'是函数所采用的变量.它是二叉树节点(BTN).temp-> d访问数据. - > l是孩子, - > r是对的孩子. - > p是父母

注意:这是家庭作业.这是优先考虑的问题.

注2:我看过类似的问题.所有人都提出了一个计时错误,'cout''减慢了代码的速度.什么会导致这个?我想不出我正在做的任何真正"昂贵"的事情.

  BTN<generic>* nTemp;
  cout << "Sdf\n";
  if(temp->r != NULL)
  {
    if(temp->l != NULL)
        {
          if(*(temp->r->d) > *(temp->l->d))
          {
            if(*(temp->r->d) > *(temp->d))
                {
                  cout << "ASDfs5: " << *(temp->d) << "\n";  //THIS IS WHAT KEEPS IT FROM BREAKING / SEGFAULTING
                  nTemp->d = temp->d; //THIS IS WHERE IT BREAKS (SEGFAULT)
                  cout << "ASDfs\n";
                  temp->d = temp->r->d;
                  cout << "ASDfs4\n";
                  temp->r->d = nTemp->d;
                            cout << "ASDfs3\n";
                  if(temp->r != NULL)
                  {
                    checkPopValues(temp->r);
                            cout << "ASDfs2\n";
                  }
                }
          }
          else
          {
            if(*(temp->l->d) > *(temp->d))
                {
                  nTemp->d = temp->d;
                  temp->d = temp->l->d;
                  temp->l->d = nTemp->d;
                  checkPopValues(temp->l);
                }
          }
        }
        else
        {
          if(*(temp->r->d) > *(temp->d))
          {
            nTemp->d = temp->d;
                temp->d = temp->r->d;
                temp->r->d = nTemp->d;
                checkPopValues(temp->r);
          }
        }
  }
  else
  {
    cout << "sdfs\n";
    if(temp->l != NULL)
        {
          if(*(temp->l->d) > *(temp->d))
      {
            nTemp->d = temp->d;
                temp->d = temp->l->d;
                temp->l->d = nTemp->d;
                checkPopValues(temp->l);
          }
        }
  }
}
Run Code Online (Sandbox Code Playgroud)

Col*_*nee 6

你没有分配任何东西nTemp.它指的是垃圾.

当您在中断的行上访问它时,会发生未定义的行为.如果你很幸运,你应该获得访问冲突/段错误.如果你不幸运,它会默默地"工作",但可能会给你错误的结果.

您需要为其指定现有指针BIN<Generic>或创建新指针.