string *str1 = new string;
delete str1;//刪除一個對象
string *str2 = new string[100];
delete []str2;//刪除一個由對象組成的數組
如果使用delete[] str1或者delete str2都是未定義的
數組所用的指針通常還包括數組大小的記錄,以便delete知道需要調用多少次析構函數
編譯器往往會這麼實現對象數組
n | object | object | object | object |
---|
typedef string AddressLine[4];
int main()
{
string* p = new AddressLine;
delete []p;//great
//delete p;行爲未定義
//最好儘量不要對數組形式做typedef動作
//可以嘗試用vector代替
}