C++开发初级


906 浏览 5 years, 3 months

4.2 使用析构函数释放内存

版权声明: 转载请注明出处 http://www.codingsoho.com/

使用析构函数释放内存

如果不再需要动态分配的内存,就必须释放它们。如果为对象动态分配了内存,那么将会在析构函数中释放内存。当对象被销毁的时候,编译器确保调用析构函数。

下面是带有析构函数的Spreadsheet类。

class Spreadsheet
{
 public:
  Spreadsheet(int inWidth, int inHeight);
  ~Spreadsheet();
};

代码取自 Spreadsheet\Spreadsheet.h

析构函数与类(以及构造函数)同名,前面带有一个波浪号(~)。析构函数没有参数,并且只能有一个。

下面是Spreadsheet类析构函数的实现:

Spreadsheet::~Spreadsheet()
{
  for (int i = 0; i < mWidth; i++) {
    delete [] mCells[i];
  }
  delete [] mCells;
  mCells = nullptr;
}

代码取自 Spreadsheet\Spreadsheet.cpp

析构函数释放在构造函数中分配的内存。当然,并没有规则要求在析构函数中释放内存。在析构函数中可以编写任何代码,但最好让析构函数只释放内存或者清理其他资源。