繁体   English   中英

运行失败(未知原因)

[英]Run Failure (Unknown Cause)

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

这是结构:

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);
}

s是TreeNode *类型的堆栈,并保存节点。 根是单个节点。

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

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

对于我应该如何分配指针的任何见解将不胜感激。

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

您永远不会初始化指针bc

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

了解如何通过启用编译器警告来充分利用编译器。 优化编译并启用适当的警告时,GNU和clang将捕获此类错误。 了解如何使用调试器。 了解如何手动执行代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM