HRESULT FinalConstruct()
{
p=NULL ; // p,p1 is a pointer which point to char
p1=NULL ;
p=new char[100];
if(p== NULL)
return E_OUTOFMEMORY ;
p1=new char[100] ;
if(p1== NULL)
return E_OUTOFMEMORY }void FianlRelease()
{
if(p!=NULL)
delete []p ;
if(p1!=NULL)
delete []p1;}
如果p 分配内存成功 ,p1 分配不成功, 就会return E_OUTOFMEMORY , return
后还会调用 FianlRelease() 吗? 如果不调用,是不是 p的内存就没有释放,
泄漏了?
请大家执教!!! 谢谢!
{
p=NULL ; // p,p1 is a pointer which point to char
p1=NULL ;
p=new char[100];
if(p== NULL)
return E_OUTOFMEMORY ;
p1=new char[100] ;
if(p1== NULL)
return E_OUTOFMEMORY }void FianlRelease()
{
if(p!=NULL)
delete []p ;
if(p1!=NULL)
delete []p1;}
如果p 分配内存成功 ,p1 分配不成功, 就会return E_OUTOFMEMORY , return
后还会调用 FianlRelease() 吗? 如果不调用,是不是 p的内存就没有释放,
泄漏了?
请大家执教!!! 谢谢!
如果没调用,p的内存肯定泄漏了
如果都申请成功,在用完后,也要调用finalrelease释放所有内存
FinalRelease(),类 的虚构函数都不会执行了吗?
HRESULT FinalConstruct()
{
p=NULL ; // p,p1 is a pointer which point to char
p1=NULL ;
p=new char[100];
if(p== NULL)
return E_OUTOFMEMORY ;
p1=new char[100] ;
if(p1== NULL)
{
FianlRelease();
return E_OUTOFMEMORY ;
}
}
这样不是很好吗?
p1=NULL ;
p=new char[100];
p1=new char[100] ;
if(p1== NULL || p == NULL)
{
FianlRelease();
return E_OUTOFMEMORY
}
看看源代码:
HRESULT FinalConstruct()
{
CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct();
return m_contained.FinalConstruct();
}
void FinalRelease() //会直接执行到这里
{
CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalRelease();
m_contained.FinalRelease();
}