函数体内new出来的局部对象,跳出函数后,该对象消失吗
如题。
举个例子:
/***************************************************************/
tempalte<class T>
class Chain{
....
Chain<T>* Merge(const Chain<T>& z) const;//合并链表:当前链表与链表z合并,返回链表指针。
....
}
template<class T>
Chain<T> * Chain<T>:: Merge(const Chain<T>& z)const;
{
Chain<T> *x = new Chain<T>;//合并好的链表放入x,并作为返回值
.....
return x;
delete x;//显然现在删除x已经没用了,因为return已经跳出函数
}
void main(){
Chain<int> y;//假设已经有好多节点了
Chain<int> z;//假设已经有好多节点了
Chain<int> *p = new Chain<int>;
p = y.Merge(z);
p.Output();//输出链表p,但此时merge()函数中的x仍然存在
}
/***********************************************************/
上述示例代码的意思是将两条单链表合并,并返回合并后的链表的指针。
我想问的是main()函数执行完了,Merge函数中new出来的x是否还没有删除,我知道我函数中的delete x是错的。哪位能帮忙看看,如何将x占用的内存释放。
[解决办法]
Chain<int> y;//假设已经有好多节点了
Chain<int> z;//假设已经有好多节点了
Chain<int> * p = y.Merge(z);
p.Output();//输出链表p,但此时merge()函数中的x仍然存在
delete p;