函数内 new 的对象,实在函数内delete,还是在调用完毕后delete呢?

如CStringArray*XHelper::GetAll(){CStringArray*arr=newCStringArray();.......arr.Add(L"....
CStringArray* XHelper::GetAll()
{
CStringArray* arr = new CStringArray();
....
...
arr.Add(L"......");
}

XmlHelper xhelper;

//加载测试单元名称列表
CStringArray* arrUnit =new CStringArray();
arrUnit = xhelper.GetAll();
if(arrUnit->GetCount()<=0)
{
delete arrUnit;
return TRUE;
}
else
{
...
...
delete arrUnit;
}

是不是在外部调用完毕后delete的呢?

另外
XmlHelper xhelper;

跟XmlHelper *xhelper = new XmlHelper()
有什么区别呢?
XmlHelper xhelper;

这种方法需要delete xhelper对象么?
展开
 我来答
百度网友26ad406
2012-12-11 · TA获得超过1611个赞
知道大有可为答主
回答量:1506
采纳率:100%
帮助的人:1084万
展开全部
一般在函数内delete 就是使用完毕后立即delete
XmlHelper xhelper;定义的局部变量 在栈上 不用delete 系统在函数结束时自动回收内存
XmlHelper *xhelper = new XmlHelper() 这个分配的空间在堆上 需要程序员自己释放内存 否则会造成内存泄露
追问
GetAll
里面的
arr.Add(L"......");
之后是需要
return arr的.
所以,delete只能放外部吧?
追答
你return之后可定是需要使用的 全部使用完了再delete
wangqilining
2012-12-16
知道答主
回答量:68
采纳率:0%
帮助的人:16.8万
展开全部
在函数内delete;
如果对象为输出参数,建议从参数传入对象指针!
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
地球边
2012-12-11
知道答主
回答量:32
采纳率:0%
帮助的人:13.2万
展开全部
一般在函数内delete 就是使用完毕后立即delete
XmlHelper xhelper;定义的局部变量 在栈上 不用delete 系统在函数结束时自动回收内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式