首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于new和delete的一个基础有关问题

2012-11-03 
关于new和delete的一个基础问题大家好,代码如下,BTNode是自定义二叉树。问题就是,我要返回一个BTNode*的返

关于new和delete的一个基础问题
大家好,代码如下,BTNode是自定义二叉树。问题就是,我要返回一个BTNode*的返回值,而s又是new出来的,如果在return之前delete的话,就会出错。如果不加delete又不严谨,谢谢大家,在线等~~~~

C/C++ code
BTNode *CreateBT(char *pre,char *in,int n){        BTNode *s;        char *p;    int k;    if(n<=0) return NULL;    s=new BTNode;        //s=(BTNode *)malloc(sizeof(BTNode));    s->data=*pre;    for(p=in;p<in+n;p++)    {        if(*p==*pre)            break;    }    k=p-in;    s->lchild=CreateBT(pre+1,in,k);    s->rchild=CreateBT(pre+k+1,p+1,n-k-1);        return s;    }


[解决办法]
想什么呢?什么叫不严谨,你这个需求就不能delete,要delete也得专门写个DestroyBT函数
[解决办法]
最后不用的时候在delete 整棵树
[解决办法]
要专门写一个
[解决办法]
探讨

因为我要把返回值存到list<BTNode *>里,我试过了,不加delete的时候,list里保存的值都是第一次调用CreateBT时的返回值。

[解决办法]
在外部delete吧
[解决办法]
需要的时候分配,不用了就释放。
[解决办法]
你创建一个树,然后在返回前删除。。。

热点排行