[英]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();
您永远不会初始化指针b
和c
。
您应该自己捕获这些错误。 来此站点作为您抵御错误的第一道防线是一个非常糟糕的主意。 您将不会学习如何调试。 如果没有我们的帮助,您怎么能发现这些问题? 使用您的编译器,使用valgrind等分析工具,使用调试器,甚至手动执行代码。
了解如何通过启用编译器警告来充分利用编译器。 优化编译并启用适当的警告时,GNU和clang将捕获此类错误。 了解如何使用调试器。 了解如何手动执行代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.