Offcourse it will result memory leak.... so use auto_ptr for such thing .. see following example, i have used two types to avoid memory leaks one is auto_ptr and another is initialize function
#include
<iostream>#include
<memory>class
DataClass{public
:int m_iValue;
DataClass(int i =0):m_iValue(i){}
void show(void) {
std::cout<<std::endl<<"Value :- "<<m_iValue<<std::endl;
}
};
class
ResourceLeakFreeClass{public
:std::auto_ptr<DataClass> m_Data1;
DataClass * m_Data2;
ResourceLeakFreeClass():m_Data1(new DataClass(100)),m_Data2(InitDataClass(200)){}
~ResourceLeakFreeClass(){
if(m_Data2){
delete m_Data2;
m_Data2 = 0;
}
}
DataClass * InitDataClass(int iData){
try{return new DataClass(iData);}
catch (...) {delete m_Data2;throw;}
}
};
int
main(int argc, char* argv[]){
ResourceLeakFreeClass RLFC;
RLFC.m_Data1->show();
RLFC.m_Data2->show();
return 0;
}