C++中delete和delete[]的區別

  1. 用 new 創建的對象用 delete 回收,用 new[] 創建的對象用 delete[] 回收。

  2. 基本類型的對象沒有析構函數,所以基本類型組成的數字空間都可以用 delete 或者 delete[] 回收;

  3. 對於類對象數組,只能用delete[];

  4. 對於 new 的單個對象,只能用delete。

class A{
public:
        A(){
            cout<<"constructor"<<endl;
        }
        ~A(){
            cout<<"destructor"<<endl;
        }
};

int mian( void )
{
    int num = 5;

    A * c1 = new A[ num ];
    cout<<hex<<c1<<endl;
    delete c1;

    A * c2 = new A[ num ];
    cout<<hex<<c2<<endl;
    delete[] c2;

    return 0;
}

當使用 delete 去回收類數組空間時,只回收了c[0]。這就是問題所在。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章