永发信息网

“unhandled exception in ****:0xC00000FD stack overflow”问题!!高手请进来

答案:2  悬赏:0  手机版
解决时间 2021-02-04 06:12
  • 提问者网友:富士山上尢
  • 2021-02-03 21:54
这是我写的一个程序:
//TreeNode.h头文件
#include
using namespace std;

class BtreeNode
{
public:
char data;
BtreeNode *left,*right;

BtreeNode(char da);
~BtreeNode();
void XianxuChild(BtreeNode *bn);
void ZhongxuChild(BtreeNode *bn);
void HouxuChild(BtreeNode *bn);
};
BtreeNode::BtreeNode(char da)
{
data=da;
left=NULL;
right=NULL;
}
BtreeNode::~BtreeNode()
{
}
void BtreeNode::XianxuChild(BtreeNode *bn)
{
if(bn!=NULL)
{
cout<data<<" ";
XianxuChild(bn->left);
XianxuChild(bn->right);
}
}
void BtreeNode::ZhongxuChild(BtreeNode *bn)
{
if(bn!=NULL)
{
ZhongxuChild(bn->left);
cout<data<<" ";
ZhongxuChild(bn->right);
}
}
void BtreeNode::HouxuChild(BtreeNode *bn)
{
if(bn!=NULL)
{
HouxuChild(bn->left);
HouxuChild(bn->right);
cout<data<<" ";
}
}

//BinaryTree.h头文件
#include
#include"TreeNode.h"
using namespace std;
class Tree
{
public:
BtreeNode *root;
Tree(char *ch);
~Tree();
BtreeNode *createtree(char *ch);
void XianxuBianli();
void ZhongxuBianli();
void HouxuBianli();
};
Tree::Tree(char *ch)
{
root=NULL;
if(ch!=" ")
{
cout<<"建立一棵二叉树:"< root=createtree(ch);
cout< }
else
{
cout<<"树已建立!"< }
}
Tree::~Tree()
{
}
BtreeNode* Tree::createtree(char *ch)
{
BtreeNode *bn=NULL;
int i=0;
//while(i<100)
//{
if(ch[i]!='.')
{
bn=new BtreeNode(ch[i]);
i++;
bn->left=createtree(ch);
bn->right=createtree(ch);
}
else
{
i++;
}
//}
return bn;
}
void Tree::XianxuBianli()
{
cout<<"先序遍历二叉树:";
root->XianxuChild(root);
cout<}
void Tree::ZhongxuBianli()
{
cout<<"中序遍历二叉树:";
root->ZhongxuChild(root);
cout<}
void Tree::HouxuBianli()
{
cout<<"后序遍历二叉树:";
root->HouxuChild(root);
cout<}

#include
#include"BinaryTree.h"
using namespace std;
//主程序
void main()
{
char *ch="123.4..56..78..";
Tree Tree1(ch);
Tree1.XianxuBianli();
Tree1.ZhongxuBianli();
Tree1.HouxuBianli();
}
编译出现错误,说“unhandled exception in xx.exe(NTDLL.DLL):0xC00000FD :stack overflow”.我不知道怎么改,希望高手能帮帮我,十分感谢!!!
最佳答案
  • 五星知识达人网友:逐風
  • 2021-02-03 23:16
递归调用死循环,自己仔细查吧,数据结构书上的例子仔细看看。
会一直 ZhongxuChild下去,直到堆栈用完。幸好C++编译器帮你发现了:
void BtreeNode::ZhongxuChild(BtreeNode *bn)
{
if(bn!=NULL)
{
ZhongxuChild(bn->left);
cout<data<<" ";
ZhongxuChild(bn->right);
}
}
全部回答
  • 1楼网友:西岸风
  • 2021-02-03 23:38
如果是vc建议你修改堆栈大小。 对于编译器这是个参数。 如果是linux就是内存满了。 ----------------------------------------- 不完整的程序怎么知道你怎么把堆栈弄溢出了。 你这个情况就是微软特有的堆栈溢出。 要不然你把完整的发过来,我给你看看需要多少堆栈。 另外微软的c++有些bug编译器有时输出错误的代码。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯