C++中delete函數的具體使用

在C++中delete函數用於回收new分配的內存空間。

C++告訴我們在回收用 new 分配的單個對象的內存空間的時候用 delete,回收用 new[] 分配的一組對象的內存空間的時候用 delete[]。

關於 new[] 和 delete[],其中又分為兩種情況:(1) 為基本數據類型分配和回收空間;(2) 為自定義類型分配和回收空間。

在針對簡單的基本數據類型,使用delete也可以回收 new[] 分配的一組對象的內存空間,因為:基本的數據類型對象沒有析構函數,並且new 在分配內存時會記錄分配的空間大小,則delete時能正確釋放內存,無需調用析構函數釋放其餘指針。因此兩種方式均可。

但是在對於自定義類型的時候,使用new[] 分配的一組對象的內存空間最好還是要用delete[]回收。

例:

#include <iostream>;
using namespace std;
 
class T {
public:
  T() { cout << "constructor" << endl; }
  ~T() { cout << "destructor" << endl; }
};
 
int main()
{
  const int NUM = 3;
 
  T* p1 = new T[NUM];
  cout << p1 << endl;                            //輸出P1的地址
  //  delete[] p1;
  delete p1;
 
  T* p2 = new T[NUM];
  cout << p2 << endl;                                    //輸出P2的地址
  delete[] p2;
  return 0;
}

結果:

可以看到在使用delete回收p1時,析構函數隻調用瞭一次,也就是p1[0]的析構函數,使用delete[]回收p2時,析構函數全部調用瞭。

所以如果在分配時使用new[],回收時最好用delete[]。

到此這篇關於C++中delete函數的具體使用的文章就介紹到這瞭,更多相關C++ delete函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: