用 new 創建的對象用 delete 回收,用 new[] 創建的對象用 delete[] 回收。
基本類型的對象沒有析構函數,所以基本類型組成的數字空間都可以用 delete 或者 delete[] 回收;
對於類對象數組,只能用delete[];
對於 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]。這就是問題所在。