运行失败(未知原因)

时间:2012-09-24 22:19:46

标签: c++ stack binary-tree runtime-error

我不知道是什么导致程序失败,除了它与尝试为左右孩子分配一些指针有关。没有错误消息,程序无法运行。我只是假设它是因为我错误地指定了指针。

这是结构:

struct TreeNode
    {
            Type nodeinfo;
            BinaryTree<Type> *left;
            BinaryTree<Type> *right;
    };

该类的名称是使用模板的BinaryTree。这是令人讨厌的方法:

template <typename Type>
void BinaryTree<Type>::setSubtree(Type a){
  root = new TreeNode;
  BinaryTree<Type> *b,*c;
  root->nodeinfo=a;

  b->root = s.top();
  root->right = b;
  s.pop();

  c->root = s.top();
  root->left = c;
  s.pop();
  s.push(root);
}

是一个TreeNode *类型的堆栈并保存节点。 root是各个节点。

我已经多次改变它,我忘记了我的开始。这是测试代码(setInfo工作正常):

tree.setInfo('b');
tree.setInfo('c');
tree.setSubtree('-');

对于我应该如何分配指针的任何见解都将非常感激。

1 个答案:

答案 0 :(得分:0)

BinaryTree<Type> *b,*c;
...
b->root = s.top();
...
c->root = s.top();

您永远不会初始化指针bc

你应该自己抓住这些错误。来到这个网站作为你防止错误的第一道防线是一个非常糟糕的主意。你不会学习如何调试。没有我们的帮助你怎么能发现这些问题?使用编译器,使用valgrind等分析工具,使用调试器,甚至手动执行代码。

通过启用编译器警告,了解如何使用编译器。当编译优化并启用了足够的警告时,GNU和clang将捕获这些错误。了解如何使用调试器。学习如何手动执行代码。