函数内 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对象么? 展开
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对象么? 展开
展开全部
一般在函数内delete 就是使用完毕后立即delete
XmlHelper xhelper;定义的局部变量 在栈上 不用delete 系统在函数结束时自动回收内存
XmlHelper *xhelper = new XmlHelper() 这个分配的空间在堆上 需要程序员自己释放内存 否则会造成内存泄露
XmlHelper xhelper;定义的局部变量 在栈上 不用delete 系统在函数结束时自动回收内存
XmlHelper *xhelper = new XmlHelper() 这个分配的空间在堆上 需要程序员自己释放内存 否则会造成内存泄露
追问
GetAll
里面的
arr.Add(L"......");
之后是需要
return arr的.
所以,delete只能放外部吧?
追答
你return之后可定是需要使用的 全部使用完了再delete
展开全部
在函数内delete;
如果对象为输出参数,建议从参数传入对象指针!
如果对象为输出参数,建议从参数传入对象指针!
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般在函数内delete 就是使用完毕后立即delete
XmlHelper xhelper;定义的局部变量 在栈上 不用delete 系统在函数结束时自动回收内存
XmlHelper xhelper;定义的局部变量 在栈上 不用delete 系统在函数结束时自动回收内存
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询