永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-02-04 06:12
这是我写的一个程序:
//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”.我不知道怎么改,希望高手能帮帮我,十分感谢!!!
最佳答案
递归调用死循环,自己仔细查吧,数据结构书上的例子仔细看看。
会一直 ZhongxuChild下去,直到堆栈用完。幸好C++编译器帮你发现了:
void BtreeNode::ZhongxuChild(BtreeNode *bn)
{
if(bn!=NULL)
{
ZhongxuChild(bn->left);
cout<data<<" ";
ZhongxuChild(bn->right);
}
}
全部回答
如果是vc建议你修改堆栈大小。 对于编译器这是个参数。 如果是linux就是内存满了。 ----------------------------------------- 不完整的程序怎么知道你怎么把堆栈弄溢出了。 你这个情况就是微软特有的堆栈溢出。 要不然你把完整的发过来,我给你看看需要多少堆栈。 另外微软的c++有些bug编译器有时输出错误的代码。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
汽车补漆后多长时间可以洗车
手机版热血传奇怎么用元宝换经验
早八辈子的意思是什么啊?知道的请说下!
招行信用卡网购退款怎么处理
K-30用18-135MM镜头可以自动对焦吗
新东方优能中学教育在哪里啊,我有事要去这个
关于清朝妃子的鞋子
中国建设银行24小时自助银行(人民北路)(人民
为啥有人办不了信用卡,从来没办理过,
輣车的意思是什么啊?知道的请说下!
你好,我把监控所有画面都关了,再打开就没我
珀莱雅,先擦爽肤水'再擦乳液'再擦
山东渤海实业股份有限公司在什么地方啊,我要
dellware冰箱门关不上
main() {char ch1,ch2:ch1='A+'3':ch2='A'+'6
推荐资讯
平安银行24小时自助银行(泗砖路103弄43号松江
美图4进水拿去维修说屏幕主板都烧了,可是手
碧水源·膜科技东门地址有知道的么?有点事想
同齿的意思是什么啊?知道的请说下!
靓洁干洗店(田园街)在什么地方啊,我要过去处
北汽域胜007空调滤芯
信用卡取现还款日是取现当月还吗
年审汽车一般多少钱啊
请问各位在国家公务员考试的申论考试中是否可
鹰岩村怎么去啊,有知道地址的么
55岁开始健身能练成模特身材吗?
华为P20怎么截图 ?华为P20截屏的三种方法?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?