小编use*_*252的帖子

c ++类构造函数中的内存泄漏

我有以下课程

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会有内存泄漏.

你如何避免这种内存泄漏?

c++ memory memory-leaks memory-management

5
推荐指数
1
解决办法
1262
查看次数

标签 统计

c++ ×1

memory ×1

memory-leaks ×1

memory-management ×1