我有以下课程
class CSample
{
char* m_pChar;
double* m_pDouble;
CSample():m_pChar(new char[1000]), m_pDouble(new Double[1000000])
{
}
~CSample()
{
if(m_pChar != NULL) delete [] m_pchar;
if(m_pDouble != NULL) delete [] m_pDouble;
}
};
Run Code Online (Sandbox Code Playgroud)
在我的main()函数中,我正在尝试创建CSample的对象
int main()
{
try
{
CSample objSample;
}
catch(std::bad_alloc)
{
cout<<"Exception is caught !!! Failed to create object";
}
}
Run Code Online (Sandbox Code Playgroud)
假设在构造函数的初始化列表中为m_pDouble分配内存时,由于可用内存不足,它会抛出异常.但是对于m_pChar它已经被分配了.由于没有创建对象本身,因此不会调用析构函数.然后m_pChar会有内存泄漏.
你如何避免这种内存泄漏?