关于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 整棵树
[解决办法]
要专门写一个
[解决办法]
[解决办法]
在外部delete吧
[解决办法]
需要的时候分配,不用了就释放。
[解决办法]
你创建一个树,然后在返回前删除。。。